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