我有一个自定义IHttpModule
,可以处理所有可用事件并将HttpContext.Current.Response.StatusCode
记录到文件中。
我的web.config
在<httpModules>
中不包含任何其他模块,因此所有错误都会提升到浏览器。
虽然浏览器显示404,但日志文件中有200个(Ok)条目,而不是单个404.
我错过了什么?
以.aspx
结尾的网址在404
事件中确实有PreSendRequestHeaders
StatusCode,
但是,例如,.pdf
的网址在所有活动中显示StatusCode 200
?
答案 0 :(得分:0)
当有404时你的模块是否真的在运行?
您是否已在模块中使用断点将调试器附加到应用程序 - 当您请求不存在的.aspx页面时是否会受到影响?当您请求不存在的文件或目录时是否会受到影响?
加快IIS的设置,ASP.NET可能无法查看这些错误 - 例如,它不会处理somepage.html或者missing.gif的请求。
答案 1 :(得分:0)
我有同样的问题,我解决了它在HttpException的处理程序中转换当前异常。然后,您可以获取Http错误代码。
Exception exception = HttpContext.Current.Server.GetLastError();
HttpException httpException = exception as HttpException;
if (httpException != null)
{
int httpCode = httpException.GetHttpCode();
}
希望有所帮助:)
答案 2 :(得分:0)
聚会有点晚了。尝试在您的模块的 web.config 中删除 preCondition="managedHandler"