Недопустимый код HttpStatus, возвращенный в HttpModule

#asp.net #http-headers #httpmodule

#asp.net #http-заголовки #httpmodule

Вопрос:

Когда я выполняю поддельный URL, т.е. http://localhost:1166/urldoesnotexist, в моем HttpModule я получаю ответ.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 не найдена. — Который является правильным

Кто-нибудь, пожалуйста, может объяснить мне, почему ответ.StatusCode возвращает 200 для поддельного URL?

Ответ №1:

Каков фактический код состояния, отправленный сервером, например, если вы используете другой инструмент, такой как fiddler.

Многие страницы отправляют 200, когда они должны отправлять 404. Вы можете многое найти, выполнив поиск по запросу «страница не найдена», хотя в наши дни их стало меньше, а полезных страниц больше, около 404 страниц (улучшение со стороны поисковых систем, а не со стороны обычного веб-сайта).

Комментарии:

1. Извините, мне потребовалось некоторое время, чтобы ответить, поскольку я был в отъезде. Fiddler показывает мне, что HTTP /1.1 404 не найден. Мой вопрос, почему код ответа http-модуля выдает мне 200 за недопустимый URL?