HttpError не будет отображать пользовательские страницы ошибок

У меня есть это в web.config:

<httpErrors errorMode="Custom">
  <remove statusCode="404" subStatusCode="-1" />
  <remove statusCode="500" subStatusCode="-1" />
  <error statusCode="404" prefixLanguageFilePath="" path="/Error/NotFound.aspx" responseMode="Redirect" />
  <error statusCode="500" prefixLanguageFilePath="" path="/Error/ServerError.aspx" responseMode="Redirect" />
</httpErrors>

Но IIS по-прежнему показывает встроенную страницу ошибки.

Любые идеи?


person oekstrem    schedule 11.12.2009    source источник


Ответы (5)


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


<httpErrors>
     <!--Remove inherited 500 error page setting -->
     <remove statusCode='500' subStatusCode='-1'/> 
     <!--Override the inherited 500 error page setting with the 'My500.html' as its path-->
     <error statusCode='500' subStatusCode='-1' prefixLanguageFilePath='' path='/My500.html' responseMode='ExecuteURL'/> 
</httpErrors>
person Freddy    schedule 11.12.2009

Вам также может понадобиться установить атрибут existsReponse в элементе httpErrors следующим образом:

<httpErrors errorMode="Custom" existingResponse="Replace">
  <clear />
      <error statusCode="404" prefixLanguageFilePath="" path="/ErrorHandler.aspx" responseMode="ExecuteURL" />
  <error statusCode="500" prefixLanguageFilePath="" path="/ErrorHandler.aspx" responseMode="ExecuteURL" />
</httpErrors>
person michael_hook    schedule 18.04.2012
comment
Это то, что вызывало проблемы с последним Orchard 1.4, ура. - person Sarkie; 03.05.2012
comment
@Kiquenet http://www.iis.net/configreference/system.webserver/httperrors Не уверен, но Авто решило мою проблему. - person Ernesto; 09.06.2016
comment
Помните, что использование existingResponse="Replace" заменит все возвраты. Например, если вы вызываете webapi, который отправляет возврат с кодом состояния = 404, это переопределит ответ, используйте existingResponse="PassThrough", чтобы получить явный ответ. - person Rui Caramalho; 19.02.2021

Если вы используете ExecuteURL, путь пользовательской страницы ошибок должен находиться в том же пуле приложений, что и само приложение.

По архитектурным причинам IIS 7.0 может выполнять URL-адрес, только если он находится в том же пуле приложений. Используйте функцию перенаправления для выполнения пользовательской ошибки в другом пуле приложений.

person favo    schedule 16.07.2015


Убедитесь, что у вас есть правильные настройки функции для перенаправления страницы ошибок в IIS. Чтобы проверить это, на странице "Страницы ошибок" в диспетчере IIS нажмите "Изменить параметры функции" и убедитесь, что установлен флажок Пользовательские страницы ошибок, если вы тестируете перенаправления с самого веб-сервера. Если вы тестируете удаленно, вы можете оставить флажок Подробные ошибки для локальных запросов и настраиваемые страницы ошибок для удаленных запросов. Кажется, это опция по умолчанию в моей тестовой среде.

person JPC    schedule 08.01.2013