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

Другие вопросы по тегам