私は webforms プロジェクトを持っていて、すべての 404 エラーを Global.asax に記録したかったので、次のコードをそこに置きました。
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>
何か案が?