Как диагностировать 500 внутренних ошибок сервера на IIS 7.5, когда ничего не записывается в журнал событий?
Я только что развернул обновление на существующем сайте ASP.NET MVC3 (он уже был настроен), и я получаю синий экран IIS с указанием смерти
Ошибка HTTP 500.0 - внутренняя ошибка сервера
Невозможно отобразить страницу, поскольку произошла внутренняя ошибка сервера.
Тем не мение; в журнале событий приложений ничего не отображается, и я ожидаю увидеть (более) подробное описание записи.
Как я могу диагностировать эту проблему?
6 ответов
Взгляните на функцию отслеживания невыполненных запросов 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
который с некоторым гуглом указал мне на IIS_USRS
не имея разрешения на чтение www
папка
Наиболее очевидная проблема - неправильные или нулевые права NTFS на папку веб-приложения. Поэтому убедитесь, что учетная запись, обслуживающая сайт, имеет необходимые разрешения. Без надлежащих прав NTFS на веб-каталог не имеет значения, что вы поместите в файл web.config, поскольку он никогда не будет прочитан.
Быстрая проверка может дать всем полные права - если сайт начинает работать, то вы знаете, что это проблема с правами, и затем вы можете назначить соответствующие права более подходящей учетной записи.
При обновлении с IIS6 это может быть один из web.config, работающий на 6, но не в IIS 7.5 ... Дважды щелкните все значки в IIS для веб-сайта, и вы можете получить сообщение об ошибке формата (раздел должен быть ниже другого раздела...)
У меня была такая же проблема с веб-приложением Azure. При локальной отладке сообщения об ошибках (JSON), возвращаемые из вызовов ajax, полностью возвращались в браузер. Но после развертывания в веб-приложении сообщения были проглочены, и мне было возвращено сообщение об ошибке по умолчанию 500. Поэтому я должен был явно установить existingResponse
значение для PassThrough
в web.config httpErrors
тег.
Я много раз сталкивался с этой проблемой. Ошибка 500 на веб-сайте ASP.NET 4.x. Никакие подробности в журнале событий и даже трассировка выше не помогли. В моем случае это было вызвано тем, что в web.config есть правила перезаписи . Поэтому проверьте свой web.config, если в нем есть что-то вроде:
<system.webServer>
<rewrite>
<rules>
...
</rules>
</rewrite>
</system.webServer>
Если это так, вам необходимо установить модуль перезаписи iis: