Подтвердить что ты не робот

Что означает существующийResponse = "PassThrough" в IIS?

В документации указано

existingResponse="PassThrough"

Отбрасывает ответ без изменений, если существует существующий ответ. http://www.iis.net/configreference/system.webserver/httperrors#005

Но что это значит "существующий ответ существует"?

например. Я хочу, чтобы мой обработчик customErrors подавлял ответ ASP.NET, поэтому IIS думал, что ответа не существует. Как мне это сделать?

4b9b3361

Ответ 1

В схеме есть три возможных значения:

<attribute name="existingResponse" type="enum" defaultValue="Auto">
  <enum name="Auto" value="0" />
  <enum name="Replace" value="1" />
  <enum name="PassThrough" value="2" />
</attribute>

Грубо, вот как я это понимаю:

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

Авто - использует страницы ошибок IIS, как определено в этом node, за исключением случаев, когда вы указали в asp.net:

Response.TrySkipIisCustomErrors = true;

если вы это сделали, используется ответ от вашего кода.

Заменить - всегда использует страницы ошибок IIS, даже если разработчик установил TrySkipIisCustomErrors.

Последний вариант, по-видимому, тот, который вы хотите.


Edit:

Рассмотрим:

existingResponse="PassThrough"

теперь попробуйте открыть несуществующую страницу asp.net, вы увидите:

enter image description here

Несмотря на то, что ресурса не было, среда выполнения предоставила ответ, она передается в браузер.

Теперь попробуйте открыть несуществующую страницу html. На этот раз мы по-прежнему получаем статус 404, но пустую страницу.

изменяется на:

existingResponse="Auto"

пропущенная страница asp.net по-прежнему отображает страницу с ошибкой asp.net, но для отсутствующей html-страницы теперь мы получаем IIS:

enter image description here

Итак, резюмируя: при просмотре отсутствующих страниц html и aspx с разными existingResponse, мы получаем разные страницы ошибок:

                .html-404   .aspx-404   .aspx-500
--------------------------------------------------
Auto             IIS         asp.net    asp.net
PassThrough      -           asp.net    asp.net
Replace          IIS         IIS        IIS