我有一个定制的IHttpModule,它处理所有可用的事件,并将HttpContext.Current.Response.StatusCode记录到一个文件中。
我的web.config在<httpModules>中不包含任何其他模块,所以所有错误都被提升到浏览器。
尽管浏览器显示的是404,但是日志文件中满是200 (Ok)项,而不是一个404。
我遗漏了什么?
更新
以.aspx结尾的Url在PreSendRequestHeaders事件中确实有一个404 StatusCode,但是Url使用.pdf显示StatusCode 200在所有事件中?!
发布于 2009-06-09 10:00:58
当有404时,您的模块实际运行吗?
您是否将调试器附加到模块中有断点的应用程序--当您请求一个不存在的.aspx页面时,它会被击中吗?当您请求一个不存在的文件或目录时,它会被击中吗?
在IIS的设置上,有可能ASP.NET没有看到这些错误--它不会处理例如somepage.html或missing.gif的请求。
发布于 2011-10-05 22:06:15
我也遇到了同样的问题,并解决了它在HttpException处理程序中转换当前异常的问题。然后,您可以获得Http错误代码。
Exception exception = HttpContext.Current.Server.GetLastError();
HttpException httpException = exception as HttpException;
if (httpException != null)
{
int httpCode = httpException.GetHttpCode();
}来源:http://www.digitallycreated.net/Blog/57/getting-the-correct-http-status-codes-out-of-asp.net-custom-error-pages
希望它有帮助:)
发布于 2021-01-26 13:52:35
派对有点晚了。尝试删除模块的preCondition="managedHandler“在web.config中
https://stackoverflow.com/questions/969139
复制相似问题