在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?
发布于 2011-04-09 17:42:49
它看起来很好,并且应该调用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");
    }
}发布于 2011-04-09 18:36:01
我找到问题了。
Server.Transfer("ErrUnknown.aspx")就是原因。
当我尝试在浏览器中直接查看'ErrUnknown.aspx‘时,我意识到我在该页面中有一个错误。更正之后,Server.Transfer就可以正常工作了
虽然是误导性的,但在调试应用程序时事件不会触发吗?
不管怎么说。
https://stackoverflow.com/questions/5604144
复制相似问题