创建新的MVC3项目时,[HandleError]属性默认在GLobal.asax中注册为GlobalFilter。但是,如果我对它进行评论并执行以下(启用自定义错误模式),它仍然有效。我确实看到ErrorView与ErrorInfo模型填充。那么在Global.asax中注册HandleError需要什么?
[HandleError(ExceptionType = typeof(NullReferenceException),View = "ErrorView")]
public ActionResult Index()
{
throw new NullReferenceException();
return View();
}
答案 0 :(得分:0)
即设置默认的MVC异常处理策略。当出现未处理的异常时,它将呈现/Views/Shared/Error.cshtml
视图,而无需在每个控制器或操作上显式添加HandleError属性。
然后,您可以向控制器和/或操作添加更多特定的HandleError
属性,这样您可以显示另一个错误视图而不是默认视图,或处理更具体的异常类型。
要使HandleError过滤器正常工作(全局或非全局),您只需要确保在web.config中启用了自定义错误,如<customErrors mode="On" />
中所示(默认为RemoteOnly,因此在开发期间他们赢了“被执行”
这很好地解释了(按照一个例子)here