在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?
答案 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工作
虽然在调试应用程序时事件不会被触发,但是会产生误导吗?
反正。