Отключение пользовательских ошибок IIS8 для классического ASP - потенциальная ошибка в IIS?
Я думаю, что нашел ошибку в системе IIS Error Pages.
Примечание: - Я не использую.NET Error Pages - для этого установлено значение Off
Эта проблема:
Когда настраиваемая страница ошибки настроена для кода ответа 500.100 (Classic ASP), IIS всегда отправляет настраиваемую страницу ошибки, даже если для параметра errorMode установлено значение " Подробно". Единственный способ заставить IIS отправить ошибку - явно удалить запись в файле web.config.
НАПРИМЕР:
<remove statusCode="500" subStatusCode="100"/>
or
<clear/>
Примечание: следующее не работает (работает для всех других кодов):
<remove statusCode="500" subStatusCode="-1"/>
Мой сценарий:
- IIS 8 (я не знаю, существует ли проблема в более старых версиях IIS)
- Сайт работает под управлением.NET 2.0 - классический конвейер
- Делегирование функций на страницах ошибок установлено только для чтения
- Ошибка страницы настройки в IIS выглядит следующим образом (из-за делегирования функции выше, эти записи не находятся в web.config):
- 404 - /path/to/404.htm - ExecuteURL
- 500 - /path/to/500.htm - ExecuteURL
- 500.100 - /path/to/500.htm - ExecuteUrl
Отключение пользовательских ошибок:
Чтобы отключить пользовательские ошибки, все, что мне нужно сделать, это:
- Загрузить IIS
- нагрузка
Error Pages
- Нажмите
Edit Feature Settings
- Выбрать
Detailed Errors
Это работает успешно для всех кодов, кроме ошибок Classic ASP 500 (код состояния 500.100).
Единственный способ получить правильную ошибку Classic ASP - настроить следующее (что требует от меня изменения делегирования функции на чтение / запись):
<system.webServer>
<httpErrors errorMode="Detailed">
<clear/>
OR
<remove statusCode="500" subStatusCode="100"/>
</httpErrors>
</system.webServer>
Резюме
Похоже, что если настроена пользовательская страница ошибок 500.100, то если для подробных ошибок задано значение true, то для ошибок Classic ASP 500 не работает.
Это ошибка или я что-то упустил?
2 ответа
Это известная ошибка, которую мы также получаем и работаем над ней, удаляя ошибку 500 и вместо этого ссылаясь на нашу пользовательскую страницу из части конфигурации "когда вы можете найти что-нибудь еще, чтобы отправить их".
(Я не могу вспомнить, как это называется)
Попробуйте изменить ваш web.config таким образом (он работал для меня с IIS 7.5).
Заменить линию
<httpErrors errorMode="Detailed">
с
<httpErrors existingResponse="PassThrough" errorMode="Detailed">
Это связано с тем, что по умолчанию IIS7 перехватывает коды состояния HTTP, такие как 4xx и 5xx, сгенерированные приложениями далее по конвейеру.