捕获Global.asax中的错误

我的Global.aspx中有以下内容用于处理错误:

void Application_Error(object sender, EventArgs e) { Exception exception = Server.GetLastError(); if (exception != null) { //Log if (HttpContext.Current.Server != null) { HttpContext.Current.Server.Transfer("/siteerror.aspx"); } } } 

这在很大程度上起作用,但有时不会进入Server.Transfer。 由于某种原因,HttpContext.Current.Server为null。 我想出了这种情况发生的地方:用户控件和业务逻辑类中发生错误。 我在这里错过了什么吗?

谢谢

Application_Error块可以在应用程序生命周期之间的任何时间捕获exception。

应用程序生命周期是会话生命周期的父级,因为您可以理解单个应用程序中可以有多个会话。

因此,在创建会话之前或会话到期之后,您可能会遇到HttpContext.Current null。

如果要编写会话特定的错误重定向,则应始终检查当前HttpContext的Null。

您还可以使用Server.GetLastError来了解发生的错误详细信息,并通过web.config中的CustomError标记重写您的错误页面

请参阅以下链接

http://weblogs.asp.net/scottgu/archive/2006/08/12/Tip_2F00_Trick_3A00_-Show-Detailed-Error-Messages-to-Developers.aspx

应用程序错误可以随时发生 – 包括没有连接时。

例如,如果后台线程正在处理并导致exception。