HttpModule中返回的HttpStatus代码无效

时间:2011-04-08 00:44:26

标签: asp.net http-headers httpmodule

当我执行假网址http://localhost:1166/urldoesnotexist时,在我的HttpModule中我得到response.StatusCode为200(OK)。我原以为它会返回404(未找到)。请参阅以下代码

public class HttpPeformanceMonitorModule : IHttpModule
{      
    public void Init(HttpApplication context)
    {
        context.EndRequest += (sender, e) => TraceRequestEnd(sender, "PageLifeCycleTimer", "Begin - End Request");            
    }

    private void TraceRequestEnd(object sender, string timerKey, string title)
    {
        HttpContext httpContext = ((HttpApplication)sender).Context;

        if (response.StatusCode == 200) //for "http://localhost:1166/urldoesnotexist" I get Status Code  200!!!!
        {
             //do stuff...
        }
    } 

}

但是,一旦将响应传递到浏览器,我在页面上看到的最后一个结果就是404 Page Not found。 - 哪个是正确的

任何人都可以解释一下为什么response.StatusCode为假网址返回200?

1 个答案:

答案 0 :(得分:0)

服务器发送的实际状态代码是什么,例如如果你使用其他工具,如fiddler。

当他们发送404时,很多页面会发送200.你可以通过搜索“找不到页面”找到很多,虽然现在它们的数量更少,而且有用的数量更多页面关于 404页面(搜索引擎方面的改进,而不是普通网站的改进)。