Я думаю, что обнаружил ошибку в системе страниц ошибок IIS.
Примечание: - Я не использую страницы ошибок .NET - для этого параметра установлено значение Выкл.
Проблема:
Когда настраиваемая страница ошибки настроена для кода ответа 500.100 (классический ASP), IIS всегда отправляет настраиваемую страницу ошибки, даже если для параметра errorMode установлено значение Подробно. Единственный способ заставить IIS отправить ошибку - явно удалить запись в файле web.config.
EG:
<remove statusCode="500" subStatusCode="100"/>
or
<clear/>
Примечание: следующее не работает (работает для всех остальных кодов):
<remove statusCode="500" subStatusCode="-1"/>
Мой сценарий:
- IIS 8 (я не знаю, существует ли проблема в более старых версиях IIS)
- Веб-сайт под управлением .NET 2.0 - классический конвейер
- Для делегирования функций на страницах ошибок установлено значение только для чтения
- Error page setup in IIS as follows (due to the feature delegation above, these entries are not in the 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).
Единственный способ получить правильную классическую ошибку ASP - это настроить следующее (что требует, чтобы я изменил делегирование функции на чтение / запись):
<system.webServer>
<httpErrors errorMode="Detailed">
<clear/>
OR
<remove statusCode="500" subStatusCode="100"/>
</httpErrors>
</system.webServer>
Резюме
Похоже, что если настроена настраиваемая страница ошибок 500.100, то установка для Подробных ошибок значения true не работает для ошибок Classic ASP 500.
Это ошибка или я что-то упускаю?