Назад | Перейти на главную страницу

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

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

Ошибка HTTP 500.0 - внутренняя ошибка сервера
Страница не может быть отображена из-за внутренней ошибки сервера.

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

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

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

Устранение неполадок с невыполненными запросами с помощью трассировки в IIS 7
Устранение неполадок с отслеживанием неудачных запросов

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

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

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

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

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

  • Журнал событий был пуст.
  • 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

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

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

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

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

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