В IIS 7.0 не отображаются страницы пользовательских ошибок

Я запускаю приложение, которое имеет свои собственные обработчики ошибок. Страницы ошибок отображаются правильно при тестировании в среде dev (страницы ошибок отображаются правильно).
Однако тот же код на производственной IIS, страницы ошибок заменены. Проблема описана здесь.

Мне просто интересно, есть ли способ записать эти настройки в файле web.config вместо изменения кода.

Ответы

Ответ 1

Awe прав (+1), но кроме того: IIS 7 имеет специальную обработку, описанную в сообщении в блоге, которое вы связали, и эта статья MSDN, Если вы используете HandleErrorAttribute в своем действии, это уже сделано для вас. Если нет, вам нужно установить:

filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;

... сами.

Ответ 2

Ну. Оказалось, что для того, чтобы заставить IIS 7 показывать пользовательские страницы, в файл web.config должны быть добавлены следующие строки.

Вставьте раздел system.webServer

<httpErrors errorMode="Detailed"> <!-- this is impornant -->
<!-- Some custom error pages url go here -->
</httpErrors>

Ответ 3

В файле приложений Web.config есть параметр, чтобы установить режим отладки:

По умолчанию:

<customErrors mode="RemoteOnly" />

Попробуйте установить значение "Выкл." (Примечание: значение чувствительно к регистру!)

<customErrors mode="Off" />

Я не уверен, что этот параметр соблюден IIS7, но поскольку вы видите другое поведение в своей среде разработки из развернутого, это было моим кулаком. Чтобы проверить, если это так, вы можете попробовать запустить свое приложение-разработчик с другого компьютера в вашей сети, если у вас есть такая возможность.

Ответ 4

Я узнал, что раздел <system.webServer> может пропускать запрос. Затем мое приложение может отображать мою собственную страницу. Вы можете использовать эти строки в Web.Config:

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

Вы также можете прочитать расширенную версию, чтобы узнать Что ожидать от пользовательского модуля ошибок IIS7.