我有一个 webforms 项目,我想在 Global.asax 中记录所有 404 错误,所以我把这段代码放在那里:
void Application_Error(object sender, EventArgs e)
{
var exception = Server.GetLastError();
var httpException = exception as HttpException;
if (httpException == null)
{
Log.Error(string.Format("Unkown error:", Request.Url.AbsoluteUri), exception);
}
else if (httpException.GetHttpCode() == 404)
{
Log.Warn(string.Format("RequestError 404: {0}", HttpContext.Current.Request.Url.AbsoluteUri));
}
else
{
Log.Error(string.Format("RequestError {0}: {2}\r\n{1}", httpException.GetHttpCode(), Server.UrlDecode(Request.Headers.ToString()), HttpContext.Current.Request.Url.AbsoluteUri), httpException);
}
}
这适用于所有扩展名为“.aspx”的请求。没有它或使用另一个扩展Application_Error
名将被绕过。
这是我的web.config
<customErrors defaultRedirect="/500.aspx" mode="Off">
<error statusCode="404" redirect="/404.aspx"/>
<error statusCode="500" redirect="/500.aspx"/>
</customErrors>
任何的想法?