Global.asax中的Application_Error事件不执行

Posted KenshinCui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Global.asax中的Application_Error事件不执行相关的知识,希望对你有一定的参考价值。

      最近在做一个asp.net mvc的项目,既然是一个实际项目怎么能够没有异常处理和相应的日志记录呢。因此决定在Global.asax中的Application_Error事件中记录事件日志和统一处理异常。但是结果发现Application_Error事件根本没有执行,很奇怪,按照asp.net中四种异常处理的优先级来讲,Application_Error事件应该是优先级最高的啊,怎么它没有执行呢?

      在网上搜了搜,结果发现提到此问题的还真不是很多,google、baidu、yahoo都试了但是确很少谈这个的。最后发现有一篇英文文章在探讨这个问题,粗略读了一下,发现有相应的解决方法的超链接:http://support.microsoft.com/Default.aspx?id=329291 ,这是微软的帮助和支持,里面有几种方法,照着做就可以了。另外我想补充的是,我在解决这个问题的时候并不是很顺利,我在照着上面的做过之后故意在一个Action中执行throw new Exception();之后没有执行Application_Error事件,我当时想是没有解决此问题。后来继续在网上找,发现有人说先删除Global.asax文件然后编译接着再添加Global文件。我这样做了之后当我继续执行那个Action的时候问题依然没有解决,于是决定先放一放。但是偶然的一次异常(不是我故意抛出的异常)竟然执行了Application_Error事件,很奇怪。不知道是我删除再添加的缘故还是按照上面微软提供的帮助解决的缘故,我想应该是按照帮助里解决的概率居多,但是如果不行的话可以试试删除再添加的方法。

      注意:现在当我在Action中故意抛出异常时,也没有引发Application_Error事件的执行,希望有知道的朋友指点一下到底为什么。

开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于Global.asax中的Application_Error事件不执行的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在 Global.asax.cs 中的 Application_BeginRequest 没有被自托管的 WCF 服务调用

从global.asax中的Application_BeginRequest重定向到某个操作

无法中断 global.asax / Application_Start

ASP.NET MVC:如何在 Global.asax.cs 中的 Application_Start() 中检测浏览器宽度

asp.net html静态文件没有触发global.asax中的Application_BeginRequest事件的解决方法

ASP.NET MVC中注册Global.asax的Application_Error事件处理全局异常