2

我有一个自定义IHttpModule处理所有可用事件并将其记录HttpContext.Current.Response.StatusCode到文件中。

Myweb.config中不包含任何其他模块,<httpModules>因此所有错误都会被提升到浏览器。

尽管浏览器显示 404,但日志文件中充满了 200 个(正常)条目,而不是单个 404。

我错过了什么?


更新

以结尾的 Url在事件中.aspx确实有一个404StatusCode ,但是以结尾的 Url例如在所有事件中都显示 StatusCode?!PreSendRequestHeaders.pdf200

4

3 回答 3

0

我有同样的问题,我解决了它在 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

希望能帮助到你 :)

于 2011-10-05T22:06:15.670 回答
0

当有 404 时,您的模块是否真的在运行?

您是否已在模块中使用断点将调试器附加到应用程序 - 当您请求不存在的 .aspx 页面时,它是否会受到影响?当你请求一个不存在的文件或目录时它会被击中吗?

取决于 IIS 的设置,ASP.NET 可能无法查看这些错误 - 例如,它不会处理对 somepage.html 或missing.gif 的请求。

于 2009-06-09T10:00:58.030 回答
0

派对有点晚了。尝试在 web.config 中为您的模块删除 preCondition="managedHandler"

于 2021-01-26T13:52:35.740 回答