Есть ли способ запретить IIS автоматически переопределять вывод веб-приложения, которое возвращает код состояния в диапазоне 500 или 400?
В качестве примера в ColdFusion я могу создать следующую страницу:
<cfheader statuscode="500" statustext="Error">
Sorry, an error occurred.
Поведение должно заключаться в том, что я вижу страницу с сообщением «К сожалению, произошла ошибка». и увидите в заголовках, что код состояния - 500.
Вместо этого я вижу:
Server Error
500 - Internal server error.
There is a problem with the resource you are looking for, and it cannot be displayed.
В прекрасном стиле IIS.
Я попытался просто удалить страницу пользовательского статуса 500, но это просто привело к:
The page cannot be displayed because an internal server error has occurred.
Без какого-либо прекрасного стиля.
Похоже, это происходит с любой страницей, которая возвращает код, который не находится в диапазоне 200 или 300.
На это был дан ответ в другом вопросе: IIS7 захватывает мою страницу ошибки Coldfusion
Кажется, что решение меняет конфигурацию, так что IIS игнорирует ошибку и позволяет ей пройти, поэтому параметр
<httpErrors existingResponse="PassThrough" />
Таким образом, решение состоит в том, чтобы изменить поведение IIS, что хорошо, потому что требовать от каждого существующего сервера веб-приложений изменения своего поведения было бы действительно глупо.
Посмотри пожалуйста мой обновленный ответ в другом аналогичном вопросе чтобы узнать почему и как на эту проблему нет рабочего ответа.
Очевидно, есть способ сделать это с помощью Response.TrySkipIisCustomErrors. Приведенный ниже пример взят со страницы aspx, но его следует адаптировать к вашему варианту использования.
Следующий веб-контент слишком обширен, чтобы его можно было здесь воспроизвести.
http://www.west-wind.com/weblog/posts/2009/Apr/29/IIS-7-Error-Pages-taking-over-500-Errors
Вот что определенно работает: 1. Откройте страницы ошибок для веб-сайта или приложения 2. Нажмите «Изменить параметры функции» в действиях справа 3. Выберите «Подробные ошибки» и сохраните