Application_Error不会触发?

时间:2011-04-09 09:31:04

标签: .net asp.net global-asax onerror

在Webform1.aspx.cs中:

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

在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");
}

但是从不调用Application_Error事件处理程序。相反,我得到一个运行时错误页面。

抛出异常后,我需要做什么才能调用Application_Error?

2 个答案:

答案 0 :(得分:5)

看起来很好,应该调用Application_Error。

您是否已Debugging检查了您的申请?

实际上你缺少Server.ClearError()因此将异常传递给asp.net,但是你应该在这里禁止它,因为你自己处理它。

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");
    }
}

答案 1 :(得分:1)

我发现了问题。

Server.Transfer("ErrUnknown.aspx")

是原因。

在尝试直接在浏览器中查看'ErrUnknown.aspx'时,我意识到我在该页面中有错误。更正后,Server.Transfer工作

虽然在调试应用程序时事件不会被触发,但是会产生误导吗?

反正。