Пользовательская страница ошибки, настроенная в IIS для кода 400 (неверный запрос), игнорируется

Для своего веб-сайта я настроил несколько пользовательских страниц ошибок. Если я генерирую 404, перенаправление работает нормально. При достижении 400 вместо настроенного URL-адреса отображается текст «неверный запрос».

В качестве теста я скопировал URL с 404 на 400. Без изменений. Затем я изменил перенаправление на файл. Без изменений.

Любые идеи?


person Boris Callens    schedule 06.11.2008    source источник


Ответы (5)


Возможно, это ваш ответ: на этом сайте Microsoft говорится о повторной настройке пользовательских ошибок в IIS6, которые

Следующие ошибки не настраиваются: 400, 403,9, 411, 414, 500, 500,11, 500,14, 500,15, 501, 503 и 505.

person DOK    schedule 06.11.2008
comment
Спасибо за ответ. Хотя это хороший ответ, он определенно не является решением :( - person Boris Callens; 06.11.2008
comment
по состоянию на 07.03.2019 statusCode Обязательный целочисленный атрибут. Указывает номер кода состояния HTTP, для которого вы хотите создать собственное сообщение об ошибке. Допустимые значения: от 400 до 999. docs.microsoft.com/en-us/previous-versions/iis/settings-schema/ - person Alexander Mihailov; 19.11.2020

Я столкнулся с той же проблемой и нашел это на msdn http://msdn.microsoft.com/en-us/library/ms690497.aspx

Я не уверен, будет ли это работать на IIS6, но точно работает на IIS7. Вам нужно настроить httpErrors, а не пользовательские ошибки

<system.webServer>
      <httpErrors errorMode="Custom">
            <error statusCode="400" subStatusCode="-1" path="_path" responseMode="Redirect" />
      </httpErrors>
</system.webServer>
person Nikita Ignatov    schedule 24.03.2010

Пытаться

Response.TrySkipIisCustomErrors = true;

OR

<configuration>
  <system.webServer>
    <httpErrors existingResponse="PassThrough" />
  </system.webServer>
</configuration>

исходный пост

person Roman O    schedule 02.10.2012

Проверьте, что находится в вашем файле web.config в разделе customErrors. Он имеет атрибут defaultRedirect и вложенный тег error с атрибутом redirect. Они могут конфликтовать с другими параметрами конфигурации в IIS.

person DOK    schedule 06.11.2008
comment
Я настроил его так же, как в IIS. Тем не менее, если бы страница была неправильной, я бы получил 404, не так ли? - person Boris Callens; 06.11.2008

В 2020 году это будет работать именно так web.config:

<system.webServer>
    <httpErrors errorMode="Custom" existingResponse="Replace">
      <remove statusCode="400" subStatusCode="-1" />
      ...
      <error statusCode="400" prefixLanguageFilePath="YOUR_PATH" path="YOUR_HTML_FILE" responseMode="File" />
    ...

код статуса

Обязательный целочисленный атрибут.

Указывает номер кода состояния HTTP, для которого вы хотите создать собственное сообщение об ошибке. Допустимые значения: от 400 до 999.

https://docs.microsoft.com/en-us/previous-versions/iis/settings-schema/ms689487(v=vs.90)

Обратите внимание, что плохой URL-адрес, такой как https://stackoverflow.com/%, по-прежнему нельзя будет настроить, и вы получите простой Bad Сообщение запроса от ядра IIS (код ошибки 400).

Подробнее об этом здесь https://serverfault.com/questions/257680/properly-handle-iis-request-with-percent-sign-in-url

person Alexander Mihailov    schedule 19.11.2020