Обработка ASP.NET MVC 404 и IIS7 <httpErrors> - PullRequest
8 голосов
/ 24 августа 2010

Добрый день!

Я использую стратегию для обработки 404 ошибок, например: Обработка ошибок для ASP.NET MVC 2 и IIS 7.0 или вот так: Как правильно обрабатывать 404 в ASP.NET MVC?

Короче говоря: я обрабатываю 404 как исключение в Global.asax без добавления каких-либо правил маршрутизации, если исключение составляет 404, я отображаю специальный контроллер \ действие с сообщением об ошибке.

ВклIIS6 работает с сопоставлением подстановочных знаков ASP.NET.На IIS7 в интегрированном режиме мне нужно добавить следующее к Web.config (где /error/HttpError404 - это мое действие со страницей 404):

    <httpErrors>
        <remove statusCode="403" subStatusCode="-1" />
        <remove statusCode="404" subStatusCode="-1" />
        <error statusCode="404" prefixLanguageFilePath="" path="/error/HttpError404" responseMode="ExecuteURL" />
        <error statusCode="403" prefixLanguageFilePath="" path="/error/HttpError403" responseMode="ExecuteURL" />
    </httpErrors>

Почему?Маршрутизация работает по-разному в интегрированном режиме IIS и сопоставлении подстановочных знаков IIS6?

Заранее спасибо!

ОБНОВЛЕНИЕ: Согласно моим тестам, кажется, что моя обработка ошибок работает и мои 404действие отображается, но кажется, что IIS видит код ответа 404 (который я установил программно в своем действии 404) и заменяет свою страницу ошибками по умолчанию.

Когда я установил <httpErrors>, я получил два нажатия на страницу 404: один из обработки исключений в Global.asax и один из IIS.

Может ли это быть причиной?

1 Ответ

11 голосов
/ 24 августа 2010

Кажется, я исправил это, установив в Web.config:

<httpErrors existingResponse="PassThrough" />
...