2010-08-24 2 views
8

Добрый день!Обработка ASP.NET MVC 404 и IIS7 <httpErrors>

Я использую стратегию для обработки 404 ошибки, как это: Error handling for ASP.NET MVC 2 and IIS 7.0 или это: How can I properly handle 404 in 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?

Заранее благодарен!

UPDATE: По моим тестам, кажется, что моя ошибка погрузочно-разгрузочных работ и мое действие 404 визуализируется, но мне кажется, что IIS видит 404 код ответа (который я установил программно в моем действие 404) и заменить мою страницу с ошибками по умолчанию.

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

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

ответ

11

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

<httpErrors existingResponse="PassThrough" /> 
+0

У меня была та же проблема, в течение нескольких месяцев, и это работает для меня. Спасибо за обновление! –

+0

Приветствую вас :) – artvolk

+2

Я знаю, что немного поздно, но то, что со мной работало с MVC3, использует exisitingResponse = «Заменить» –

Смежные вопросы