Почему пустые страницы обрабатываются с "200 OK" для ошибок asp.net в IIS 8.5 (Win 2012 R2)?
Я установил новый сервер Windows 2012 R2 под управлением IIS 8.5.
Мы заметили, что когда возникает ошибка (например, служба состояний ASP.NET не работает), вместо вывода экрана ошибки с кодом состояния 500 запрос фактически возвращает полностью пустую страницу (только заголовки - без содержимого). Очевидно, что нам нужно увидеть ошибки, и подача 200 OK за ошибку может быть очень проблематичной для индексаторов, таких как Google и т. Д., Или для любых других инструментов мониторинга (которые не сообщат нам, что сайт перешел в автономный режим).
На других наших серверах (IIS 7) мы видим "желтый экран ошибки" с сообщением типа "не удалось подключиться к серверу состояний" (или аналогичным).
Что здесь может быть не так? Есть ли какая-то настройка, чтобы глобально отключать все ошибки (но это было бы глупо, если бы он также обслуживал код состояния 200) или что-то еще мешало?
Единственное, что может помешать, это то, что на сервере установлен ISAPI_Rewrite (но обычно это не вызывает этой проблемы).
Спасибо!
7 ответов
Была похожая проблема на Windows 8.
В настройках найдите "Включить или отключить функции Windows".
Убедитесь, что следующие функции включены
"/ Информационные службы Интернета / Службы всемирной паутины / Общие функции HTTP / Ошибки HTTP ". "/ Информационные службы Интернета / Службы всемирной паутины / Общие функции HTTP / Статическое содержимое ".
Необходимо убедиться, что в модуле ASP не включена отладка на стороне сервера.
Классические ошибки ASP сервера 500 возвращаются как 200. Предпринята попытка открыть приложение отладки на стороне сервера, которое затем не может быть найдено, и IIS впоследствии возвращает ответ 200 и пустую страницу.
Убедитесь, что вы не вызываете Server.ClearError() в Application_Error файла Global.asax.cs, который оказался моей проблемой.
Извлечение всего кода Global.asax помогло мне найти причину ошибки.
После этого IIS начал возвращать страницу с ошибкой, как и ожидалось. Затем, после исправления, я вернул код Global.asax обратно.
Может быть, этот случай поможет вам.
У меня была похожая проблема при запросе Default.aspx (установить как страницу по умолчанию в каталоге). Сервер вернул статус 200, но Содержимое было пустым.
В этом случае он работал для переключения режима управляемого конвейера пула приложений с интегрированного на классический.