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