MVC HandleError过滤器没有捕获异常

时间:2012-08-29 17:48:30

标签: asp.net-mvc asp.net-mvc-3 exception-handling handleerror

我有一个MVC 3网络应用,我正在使用“ HandleError ”操作过滤器进行异常处理。我的这个动作过滤器实现如下:

[HandleError]
public class BaseController : Controller {...}

这是我的所有控制器派生的基类。在我的web.config中,我 ,我的共享文件夹中有一个 Error.cshtml (.cshtml,因为我使用的是Razor)。一切都工作正常,我得到一个很好的异常处理(由我的函数格式化)

最近,不知怎的,我得到了“未处理的异常(YSOD)”,并且由于“customErrors”,我收到了默认的ASP.Net错误消息,该消息没有任何关于实际异常的信息。这发生在AJAX帖子中。但是,我无法重现它。

是否有任何类型的错误可以逃避此操作过滤器?

1 个答案:

答案 0 :(得分:4)

  

是否有任何类型的错误可以逃避此操作过滤器?

HandleError过滤器不会捕获应用程序中触发的所有异常。它可以捕获在动作,动作过滤器中触发的异常......简单地在MVC上下文中。此外,它不会捕获状态代码不是500的HTTP个异常。仅依赖于MVC应用程序中的HandleError过滤器是一个坏主意。

您仍然应该依靠Application_Error事件来执行一些日志记录和customErrors部分,以显示HandleError未捕获的例外的自定义错误页面。

我写了一篇关于这个主题的博客post,可能对你有帮助。