StatusCode в IHttpModule всегда 200? - PullRequest
1 голос
/ 09 июня 2009

У меня есть пользовательский IHttpModule, который обрабатывает все доступные события и записывает HttpContext.Current.Response.StatusCode в файл.

Мой web.config не содержит никаких других модулей в <httpModules>, поэтому все ошибки отображаются в браузере.

Хотя Браузеры показывают 404, файл журнала полон 200 (Ok) записей, а не одного 404.

Чего мне не хватает?


Обновление

У URL, заканчивающегося .aspx, есть 404 StatusCode в событии PreSendRequestHeaders, но URL, завершающиеся с .pdf, например, показывают StatusCode 200 во всех событиях?!

Ответы [ 2 ]

0 голосов
/ 06 октября 2011

У меня была та же проблема, и я решил ее, приведя текущее исключение в обработчик в 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

Надеюсь, это поможет:)

0 голосов
/ 09 июня 2009

Ваш модуль действительно работает, когда есть 404?

Прикрепили ли вы отладчик к приложению с точкой останова в модуле - ударил ли он при запросе несуществующей страницы .aspx? Ударяется ли оно, когда вы запрашиваете несуществующий файл или каталог?

В зависимости от настройки IIS, возможно, что ASP.NET не изучит эти ошибки - он не будет обрабатывать запрос для somepage.html, например, или missing.gif.

...