Как диагностировать 500 внутренних ошибок сервера на IIS 7.5, когда ничего не записывается в журнал событий?


43

Я только что развернул обновление на существующем сайте ASP.NET MVC3 (он уже был настроен), и я получаю синий экран IIS с указанием смерти

Ошибка HTTP 500.0 - Внутренняя ошибка сервера
Невозможно отобразить страницу, поскольку произошла внутренняя ошибка сервера.

Тем не мение; в журнале событий приложений ничего не отображается, и я ожидаю увидеть (более) подробное описание записи.

Как я могу диагностировать эту проблему?


У меня была точно такая же проблема здесь. По моему опыту, если журнал событий пуст, то запрос не был правильно направлен на рабочий процесс. В одном из наших недавних развертываний мы увидели, что приложение работает с перебоями, около 50% запросов произвольно завершаются с ошибкой 500 и ничего в журналах ничего не происходит. Я подозреваю, что что-то не так с выгрузкой AppDomain, которая происходит после развертывания. Из любопытства вы используете антивирус в своей производственной среде? Решает ли сброс IIS проблему (до следующего развертывания)?
ShadowChaser

Ответы:


42

Взгляните на функцию отслеживания невыполненных запросов IIS7:

Устранение неполадок с ошибочными запросами при использовании трассировки в IIS 7
Устранение неполадок с отслеживанием сбойных запросов

Другая вещь, которую я хотел бы сделать, это настроить ваши <httpErrors>настройки, потому что IIS может проглотить сообщение об ошибке из дальнейшего конвейера:

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

Если сайт написан на классическом ASP, обязательно включите параметр « Отправить ошибки в браузер» в функции конфигурации ASP:

введите описание изображения здесь

И наконец, если вы используете Internet Explorer, убедитесь, что вы отключили Показывать дружественные сообщения об ошибках HTTP в дополнительных настройках (хотя я подозреваю, что вы уже сделали это или используете другой браузер).


2
Существующий ответ был установлен на Заменить. Спасибо за совет.
Грег Б.

Это очень хороший ответ, но его можно улучшить, если включить в него способ запуска окна конфигурации ASP.
Майкл Поттер

13

В моем случае:

  • Журнал событий был пуст.
  • web.config не был поврежден - проверено с помощью того же на локальной машине / использование inetmgr

В заключение...

  • Проверка журналов IIS показала такой запрос

...Chrome/57.0.2987.133+Safari/537.36 500 19 5 312

Ключом является:

sc-status sc-substatus sc-win32-status 500 19 5

который с некоторым гуглом указал мне на IIS_USRSотсутствие прав на чтение для wwwпапки


2
Я нашел список кодов состояния здесь: support.microsoft.com/en-us/help/943891/…
sirdank

4

Наиболее очевидная проблема - неправильные или нулевые права NTFS на папку веб-приложения. Поэтому убедитесь, что учетная запись, обслуживающая сайт, имеет необходимые разрешения. Без надлежащих прав NTFS на веб-каталог не имеет значения, что вы поместите в файл web.config, поскольку он никогда не будет прочитан.

Быстрая проверка может дать всем полные права - если сайт начинает работать, то вы знаете, что это проблема с правами, и затем вы можете назначить соответствующие права более подходящей учетной записи.


1

При обновлении с IIS6 это может быть один из web.config, работающий на 6, но не в IIS 7.5 ... Дважды щелкните все значки в IIS для веб-сайта, и вы можете получить сообщение об ошибке формата (раздел должен быть ниже другого раздела ...)


0

У меня была такая же проблема с веб-приложением Azure. При локальной отладке сообщения об ошибках (JSON), возвращаемые из вызовов ajax, полностью возвращались в браузер. Но после развертывания в веб-приложении сообщения были проглочены, и мне было возвращено сообщение об ошибке по умолчанию 500. Поэтому мне пришлось явно установить existingResponseзначение PassThroughв httpErrorsтеге web.config .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.