Почему пустые страницы обслуживаются с "200 OK" для ошибок asp.net в IIS 8.5 (Win 2012 R2)?

Я установил новый сервер Windows 2012 R2 с IIS 8.5.

Мы заметили, что при возникновении ошибки (например, служба состояния ASP.NET не была запущена), вместо того, чтобы выводить экран ошибки кода состояния 500, запрос фактически возвращает абсолютно пустую страницу (только заголовки - без содержимого). Мы, очевидно, должны видеть ошибки и обслуживать 200 OK, чтобы ошибка могла быть очень проблематичной для таких индексаторов, как Google и т.д., Или любые инструменты мониторинга wesite (которые не уведомили бы нас о том, что сайт отключен).

На других наших серверах (IIS 7) мы видим "желтый экран ошибки" с сообщением типа "невозможно подключиться к государственному серверу" (или аналогичным).

Что здесь может быть неправильным? Есть ли какой-либо параметр, чтобы глобально отключить все ошибки (но это было бы глупо, если бы он также служил для кода состояния 200) или может что-то еще мешать?

Единственное, что может мешать, - это установить ISAPI_Rewrite на сервер (но это обычно не вызывает этой проблемы).

Спасибо!

Ответ 1

В Windows 8 возникла аналогичная проблема.

В настройках найдите "Включить или отключить функции Windows".

Убедитесь, что включены следующие функции.

"/Информационные службы Интернета/Сервисы глобальной сети/Общие HTTP-функции/ Ошибки HTTP". "/Информационные службы Интернета/Услуги всемирной паутины/Общие функции HTTP/ Статическое содержимое".

Ответ 2

Вам необходимо убедиться, что отладка серверной части не включена в модуле ASP.

Ошибки классического ASP-сервера 500 возвращаются как 200. При попытке открыть приложение отладки на стороне сервера делается попытка сделать попытку, и затем IIS впоследствии возвращает ответ 200 и пустую страницу.

Ответ 3

Сброс всего кода Global.asax помог мне найти причину ошибки.

После этого IIS начал возвращать страницу с ошибкой, как и ожидалось. Затем, после применения исправления, я вернул код Global.asax.

Возможно, этот случай поможет вам.

Ответ 4

Убедитесь, что вы не вызываете Server.ClearError() в Application_Error из файла global.asax.cs, который оказался моей проблемой.

Ответ 5

У меня была аналогичная проблема при запросе Default.aspx(задано как значение по умолчанию в каталоге). Сервер возвратил статус 200, но Содержимое было пустым.

В этом случае он работал, чтобы переключить режим управляемого конвейера приложений из интегрированного в классический.