我有一个MVC 3网络应用,我正在使用“ HandleError ”操作过滤器进行异常处理。我的这个动作过滤器实现如下:
[HandleError]
public class BaseController : Controller {...}
这是我的所有控制器派生的基类。在我的web.config中,我 ,我的共享文件夹中有一个 Error.cshtml (.cshtml,因为我使用的是Razor)。一切都工作正常,我得到一个很好的异常处理(由我的函数格式化)
最近,不知怎的,我得到了“未处理的异常(YSOD)”,并且由于“customErrors”,我收到了默认的ASP.Net错误消息,该消息没有任何关于实际异常的信息。这发生在AJAX帖子中。但是,我无法重现它。
是否有任何类型的错误可以逃避此操作过滤器?
答案 0 :(得分:4)
是否有任何类型的错误可以逃避此操作过滤器?
HandleError
过滤器不会捕获应用程序中触发的所有异常。它可以捕获在动作,动作过滤器中触发的异常......简单地在MVC上下文中。此外,它不会捕获状态代码不是500的HTTP
个异常。仅依赖于MVC应用程序中的HandleError
过滤器是一个坏主意。
您仍然应该依靠Application_Error
事件来执行一些日志记录和customErrors
部分,以显示HandleError
未捕获的例外的自定义错误页面。
我写了一篇关于这个主题的博客post,可能对你有帮助。