Назад | Перейти на главную страницу

IIS httpErrors ExecuteURL добавляет странную строку запроса, например 500; http: //mysite.com/failed-page к целевому URL-адресу

Я заметил странное поведение на страницах ошибок IIS. У меня есть такая настройка:

<httpErrors errorMode="Custom" existingResponse="Replace">
 <remove statusCode="500" />
  <error statusCode="500" responseMode="ExecuteURL" path="/error-page" />
</httpErrors>

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

Original: http://example.com/someurl?id=some_very_long_query_string_causing_security_exception
Error: /error-page?500;http://example.com/someurl?id=some_very_long_query_string_causing_security_exception

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

Я считаю, что это самая тупая ошибка в IIS. Кто-нибудь знает, был ли для этого какой-нибудь патч из сервис-пака? В худшем случае, если к настоящему времени ничего не исправлено, есть ли способ отключить это поведение или какие-либо уловки, чтобы IIS не добавлял нежелательные данные на страницу ошибки? Потому что это нарушает весь механизм настраиваемой страницы ошибок.

Добавление косой черты в конце пути (например, path = "/ error-page /") остановит добавление кода ошибки и URL-адреса, обратите внимание, что при этом сохранится исходный URL-адрес с ошибкой, например

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

Вы можете установить это в defaultResponseMode для файла, который будет обслуживать одну статическую страницу.

Схема параметров IIS элемента httpErrors

Здесь тоже есть похожая проблема