捕获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标记重写您的错误页面
请参阅以下链接
应用程序错误可以随时发生 – 包括没有连接时。
例如,如果后台线程正在处理并导致exception。