global.asax Application_Error未触发

Pat*_*ank 17 asp.net global-asax

我的global.asax似乎没有解雇.我有:

void Application_Error(object sender, EventArgs e) 
{ 
    // Code that runs when an unhandled error occurs
    Server.Transfer("~/ExceptionFormView.aspx");
}
Run Code Online (Sandbox Code Playgroud)

In my web.config, I don't have anything like CustomErrors. As I want everything to be handled by Global.asax and transferred to ExceptionFormView.aspx.

It works fine locally, but not when we deploy to servers. Any thoughts?

Do I need PrecompiledApp.config?

Jes*_*ebb 19

如果customErrorsWeb.config中没有节,则与包含节的节相同mode="RemoteOnly".此customError模式将使本地请求(从运行IIS的服务器发出)不使用自定义错误,它将Application_Error()按预期执行该方法.远程请求将使用customErrors,而不执行上述方法.

这解释了为什么您在本地看到的行为与服务器上的行为不同.通过将customErrors模式明确更改为On或Off,可以在任何环境中重现此行为.Application_Error()关闭时将不会执行该部分.

<customErrors mode="On|Off|RemoteOnly" />
Run Code Online (Sandbox Code Playgroud)

这当然不能解决您的问题,您希望无论如何都要执行该方法.我对另一个问题有一个赏金,我们试图弄清楚Application_Error()当customErrors模式为On时该方法没有触发的原因.几天后再回来查看我们是否找到了解决方案.


Pat*_*ank 0

在IIS7中,集成了应用程序池。它必须是经典的: http://praveenbattula.blogspot.com/2009/12/iis-7-management-pipeline-mode-globalasax.html

  • 经典模式并不适合所有人。 (3认同)