0

创建新的 MVC3 项目时,[HandleError] 属性默认注册为 GLobal.asax 中的 GlobalFilter。但是,如果我评论它并执行以下操作(打开自定义错误模式),它仍然有效。我确实看到了填充了 ErrorInfo 模型的 ErrorView。那么在 Global.asax 中注册 HandleError 需要什么?

  [HandleError(ExceptionType = typeof(NullReferenceException),View = "ErrorView")]
        public ActionResult Index()
        {
            throw new NullReferenceException();
            return View();
        }
4

1 回答 1

0

那就是设置默认的 MVC 异常处理策略。当出现未处理的异常时,它将呈现/Views/Shared/Error.cshtml视图,而无需在每个控制器或操作上显式添加 HandleError 属性。

然后,您可以向控制器和/或操作添加更具体HandleError的属性,因此您可以显示另一个错误视图而不是默认视图或处理更具体的异常类型。

为了使 HandleError 过滤器正常工作(全局或非全局),您只需要确保在 web.config 中启用自定义错误,如<customErrors mode="On" />(默认为 RemoteOnly,因此在开发期间它们不会被执行)

这很好地解释了(以下示例)here

于 2012-12-16T09:50:26.360 回答