【问题标题】:StatusCode in IHttpModule is always 200?IHttpModule 中的 StatusCode 总是 200?
【发布时间】:2009-06-09 09:47:44
【问题描述】:

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

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

虽然浏览器显示 404,但日志文件包含 200 个(正常)条目,而不是单个 404。

我错过了什么?


更新

.aspx 结尾的网址在PreSendRequestHeaders 事件中确实有404 状态代码, 但是以.pdf 结尾的网址例如在所有事件中都显示StatusCode 200?!

【问题讨论】:

    标签: asp.net iis httpmodule ihttpmodule


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您对 .aspx 的提示。我更新了问题。模块正在运行:它记录了一堆“Eventname+Status+Url”行。
    【解决方案2】:

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

    希望对你有帮助:)

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多