本文介绍了MVC的HandleError筛选器未捕捉异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在其中我使用MVC 3 Web应用程序操作过滤器。我这个动作过滤器实现如下:

  [的HandleError]
公共类BaseController:控制器{...}

这是从我的所有控制器都派生的基类。在我的web.config我已经的 的和有一个 Error.cshtml 在我的共享文件夹(.cshtml因为我用剃刀)。一切都已经好了,我得到了一个精美异常处理(我的功能格式化)

近日,不知何故,我得到了和未处理的异常(YSOD)因为的customErrors我得到了它没有对实际的异常任何信息默认ASP.Net的错误消息。这是发生在一个AJAX回发。不过,我无法重现它。

是否有可能在任何类型的错误逃离这个动作过滤器?


解决方案

HandleError filter doesn't catch all the exceptions fired in an application. It can capture exceptions that are fired inside actions, action filters.. simply inside the MVC context. Also it doesn't capture HTTP exceptions having status code other than 500. Relying only on HandleError filter in an MVC application is a bad idea.

You should still rely on the Application_Error event to do some logging and customErrors section to display a custom error page for the exceptions that are not captured by HandleError.

I've written a blog post on this subject that may help you.

这篇关于MVC的HandleError筛选器未捕捉异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-14 07:23