Application_Error does not fire?

2019-01-26 12:21发布

In Webform1.aspx.cs:

protected void Page_Load(object sender, EventArgs e)
{
    throw new Exception("test exception");
}

In the Global.asax.cs:

protected void Application_Error(object sender, EventArgs e)
{
    // Code that runs when an unhandled error occurs
    if (Server.GetLastError() is HttpUnhandledException)
        Server.Transfer("ErrUnknown.aspx");
}

But the Application_Error event handler never gets called. Instead I get a runtime error page.

What do I have to do have Application_Error being called after an exception is thrown?

2条回答
女痞
2楼-- · 2019-01-26 13:04

I found the problem.

Server.Transfer("ErrUnknown.aspx")

was the cause.

While trying to view 'ErrUnknown.aspx' directly in the browser I realized I had an error in that page. After correcting it Server.Transfer works

Was is misleading though is that the event doesn't get fired while debugging the application?

Anyway.

查看更多
欢心
3楼-- · 2019-01-26 13:26

It looks fine and the Application_Error should being called.

Did you checked by Debugging your application?

Actually you are missing Server.ClearError() so the exception is being passed to asp.net but you should suppress it here because you are handling it by yourself.

protected void Application_Error(object sender, EventArgs e)
{
    // Code that runs when an unhandled error occurs
    if (Server.GetLastError() is HttpUnhandledException)
    {
        // suppressing the error so it should not pass to asp.net
        Server.ClearError();
        Server.Transfer("ErrUnknown.aspx");
    }
}
查看更多
登录 后发表回答