Подтвердить что ты не робот

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 по-прежнему показывает встроенную страницу ошибок.

Любые идеи?

4b9b3361

Ответ 1

Вот как я его использую, и он работает со мной, он выглядит довольно похожим, за исключением директив 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>

Ответ 2

Вам также может потребоваться установить существующий атрибут Reponse в элементе 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>

Ответ 3

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

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

Ответ 4

Кажется, что вы используете относительный URL-адрес сервера, попробуйте установить responseMode="ExecuteURL", из MSDN.

ExecuteURL

Служит динамическому контенту (например, файл .asp), указанный в пути атрибут для пользовательской ошибки. Если responseMode установлен в ExecuteURL, значение пути должно быть относительным сервером URL. Числовое значение равно 1.

Перенаправление

Перенаправляет клиентские браузеры на URL-адрес указанному в атрибуте пути, который содержит пользовательский файл ошибок. Если responseMode настроен на перенаправление, значение пути должно быть абсолютным URL. Числовое значение равно 2.

Ответ 5

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