如果Application_Error
由应用启动中的异常触发,即RouteConfig
或BundleConfig
,您如何检查Request
/ Response
是否可用?目前,对Response.Clear
的调用会引发System.Web.HttpException
其他信息Response is not available in this context
。
void Application_Error(object sender, EventArgs e)
{
//Log error
Log.Error(e);
//Clear
Response.Clear();
Server.ClearError();
//Redirect
Response.Redirect("~/Error");
}
其他问题建议重写为不使用Response
或使用HttpContext.Current.Response
或更改IIS config。
总结;如何判断应用程序启动时是否发生了错误?
答案 0 :(得分:4)
您想检查它是否是 HttpException 。
protected void Application_Error(Object sender, EventArgs e)
{
var exception = Server.GetLastError();
// Log error
LogException(exception);
var httpException = exception as HttpException;
if (httpException != null)
{
Response.Clear();
Server.ClearError();
Response.TrySkipIisCustomErrors = true;
Response.Redirect("~/Error");
}
}