Я только что развернул обновление для существующего сайта 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
В заключение...
...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
тег.