asp.net-mvc – MVC HandleError过滤器没有捕获异常

我有一个MVC 3网络应用程序,我正在使用“ HandleError”动作过滤器进行异常处理.我的这个动作过滤器实现如下:
[HandleError]
public class BaseController : Controller {...}

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

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

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

解决方法

Is it possible for any sort of errors to escape this action filter?

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

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

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

相关文章

项目要求通过网站上传大文件,比如视频文件,通过摸索实现了文件分片来上传,然后后台进行合并。 使用了...
安装新版本的Nginx(vim /etc/yum.repos.d/nginx.repo) [nginx-stable] name=nginx stable repo baseu...
什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功...
在Windows下使用Docker,我们选择Docker Desktop这个软件,非常方便。 ## Docker Desktop介绍及安装 Do...
项目开始设计的是运行在windows下,所以一开始采用的是windows服务模式来获取多媒体文件信息,后来要求...
银河麒麟高级服务器操作系统V10是针对企业级关键业务,适应虚拟化、云计算、大数据、工业互联网时代对主...