在ASP.NET MVC5中,如果控制器返回的错误代码不允许在浏览器中显示,可以通过以下方法解决:
在控制器的方法中,使用Response.StatusCode
属性设置错误代码,并返回一个空的ContentResult
:
public ActionResult MyAction()
{
// 设置错误代码
Response.StatusCode = (int)HttpStatusCode.BadRequest;
// 返回一个空的ContentResult
return new ContentResult();
}
另一种方法是创建一个自定义的错误处理过滤器来处理这个问题。首先,创建一个继承自HandleErrorAttribute
的自定义过滤器:
public class CustomHandleErrorAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
// 设置错误代码
filterContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
// 调用基类的OnException方法,以便执行默认的错误处理逻辑
base.OnException(filterContext);
}
}
然后,在FilterConfig.cs
中注册自定义过滤器:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new CustomHandleErrorAttribute());
}
}
这样,当控制器方法中抛出异常时,会返回指定的错误代码,并执行默认的错误处理逻辑。