Подробное сообщение об ошибке 500, ASP + IIS 7.5
IIS 7.5, 2008rc2, классический asp, 500 ошибка msg:
страница не может быть отображена из-за внутренней ошибки сервера.
Мне нужно знать, как настроить IIS для получения более подробной ошибки.
Я попытался установить значение true для всех параметров отладки в конфигурации ASP.
Но это не сработало. Кто-нибудь может мне помочь?
12 ответов
Я пришел к той же проблеме и исправил так же, как Алекс K.
поэтому, если" отправить ошибки в браузер " не работает, установите также это:
Страницы Ошибок - > 500 - > Изменить Настройки Функций - > "Подробные Ошибки"
также обратите внимание, что если содержимое страницы ошибок, отправленной обратно, довольно короткое, и вы используете IE, IE с радостью проигнорирует полезный контент, отправленный обратно сервером, и покажет вам свою собственную общую страницу ошибок вместо. Вы можете отключить это в настройках IE или использовать другой браузер.
Если вы находитесь на удаленном сервере, вы можете настроить свой веб.конфигурационный файл так:
<configuration>
<system.webServer>
<httpErrors errorMode="Detailed" />
<asp scriptErrorSentToBrowser="true"/>
</system.webServer>
<system.web>
<customErrors mode="Off"/>
<compilation debug="true"/>
</system.web>
дважды щелкните " ASP "на главном экране сайта в IIS admin, разверните" свойства отладки", включите" отправить ошибки в браузер "и нажмите"Применить".
В разделе " страницы ошибок "на главном экране выберите" 500", затем" изменить настройки функций "и выберите"подробные ошибки".
обратите внимание, что те же шаги применяются для IIS 8.0 (Windows Server 2012).
на web.config под
<system.webServer>
заменить (или добавить) строку
<httpErrors errorMode="Detailed"></httpErrors>
С
<httpErrors existingResponse="PassThrough" errorMode="Detailed"></httpErrors>
это потому, что по умолчанию IIS7 перехватывает коды состояния HTTP, такие как 4xx и 5xx, генерируемые приложениями далее по конвейеру.
далее включить "выводить ошибки в браузер "в разделе" ASP "и в разделе"Страницы Ошибок / Изменить Настройки Функций", выбираем "вся ошибки."
также запись в папке веб-сайта в группу iis_iusrs встроенные группы.
попробуйте установить значение атрибута httpErrors "existingResponse"в " PassThrough". Мой был установлен на "заменить", что заставляло YSOD не отображаться.
<httpErrors errorMode="Detailed" existingResponse="PassThrough">
TLDR: сначала определите, где в конвейере вы получаете ошибку (прокрутите поиск скриншотов чего-то, что напоминает вашу ошибку), внесите изменения, чтобы получить что-то новое, повторите.
сначала определите, какое сообщение об ошибке вы на самом деле видите.
Если вы видите файл, расположенный здесь...
%SystemDrive%\inetpub\custerr\ \ 500.НТМ
...который обычно выглядит как это:
...тогда вы знаете, что видите настроенную страницу ошибок в * * IIS * * и вам не нужно изменять настройки customErrors, настройки ASP error detail или настройки браузера "показать дружественные ошибки http".
вы можете посмотреть на указанный выше путь, а не доверять моему скриншоту на случай, если кто-то его изменил.
" Да, я вижу вышеописанное ошибка..."
в этом случае, вы видите настройку httpErrors> или в диспетчере IIS это Страницы Ошибка -- > "Редактировать Параметры Объекта". По умолчанию для этого используется errorMode=DetailedLocalOnly в уровень узла сервера (в отличие от уровня сайта) это означает, что, хотя вы увидите эту настроенную страницу ошибок на удаленном компьютере, вы сможете локально войти на сервер и увидеть полную ошибку, которая должна выглядеть примерно так это:
У вас должно быть все, что вам нужно в этот момент, чтобы исправить текущую ошибку.
"но я не вижу подробной ошибки даже при просмотре на сервере"
Это оставляет пару возможностей.
- браузер вы используете на сервере настроен на использование прокси-сервера в его настройках подключения он не рассматривается как "локальный".
- вы на самом деле не сидя в сайт, на который вы просматриваете-это обычно происходит, когда задействован балансировщик нагрузки. Выполните проверку ping, чтобы узнать, дает ли dns вам IP-адрес на сервере или где-то еще.
- Вы сайт httpErrors настройки установлены только для" Custom". Измените его на "DetailedLocalOnly". Однако при возникновении ошибки конфигурации это может не сработать, так как httpErrors уровня сайта также является элементом конфигурации. В этом случае перейдите к #4
- по умолчанию для httpErrors для всех сайтов установлено значение "Custom". В этом случае вам нужно нажать на серверный узел верхнего уровня в диспетчере IIS (а не на конкретный сайт) и изменить httpErrors настройки там для DetailedLocalOnly. Если это внутренний сервер, и вы не беспокоитесь о разглашении конфиденциальной информации, вы также можете установить его на "подробный", который позволит вам увидеть ошибку от клиентов, отличных от сервера.
"вход в сервер не является вариантом для меня"
измените свой сайт httpErrors "подробно", чтобы вы могли видеть его удаленно. Но если это не работает, ваша ошибка уже может быть ошибкой конфигурации, см. #3 непосредственно выше. Таким образом, вы можете застрять с #4, и вам понадобится кто-то из вашей команды серверов.
" Я не вижу страницу ошибки, описанную выше. Я вижу что-то другое"
если вы видите этот...
...и вы ожидаете увидеть нечто подобное...
...затем вам нужно изменить "отправить ошибки в браузер" на true в диспетчере IIS в разделе Site --> IIS --> ASP --> Debugging Properties
если вы видите эту...
или это...
...вам нужно отключите дружественные ошибки в вашем браузере или используйте WebView fiddler, чтобы посмотреть на актуальный ответ vs, что ваш браузер выбирает, чтобы показать вам.
Если вы видите эту...
...тогда пользовательские ошибки работают, но у вас нет пользовательской страницы ошибок (конечно, на данный момент речь шла о .net, а не о классическом asp). Вам нужно изменить тег customErrors в вашем интернете.config to RemoteOnly для просмотра на сервере, или Выключено для удаленного просмотра.
Если вы видите что-то, что стилизовано как ваш сайт, то пользовательские ошибки, вероятно, On или RemoteOnly, и он отображает пользовательскую страницу (представления->общий - >ошибка.например, cshtml в MVC). Тем не менее, маловероятно, но возможно, что кто-то изменил страницы в IIS для httpErrors, поэтому см. Первый раздел об этом.
одна вещь, о которой никто не упоминал, - это очень быстрое и временное исправление, вы можете просмотреть ошибку на localhost этого веб-сервера.
вы также можете проверить, что если вы изменили свою основную папку веб-сайта (c:\inetpub\wwwroot
) в другую папку, вы должны дать разрешение на чтение группа IIS_IUSRS в новой папке.
Fot люди, которые пробовали все и просто не могут получить детали ошибки, чтобы показать, как я, это хорошая идея, чтобы проверить различные уровни конфигурации. У меня есть файл конфигурации на уровне сайта и на уровне приложения (внутри сайта) проверить обоих. Кроме того, как оказалось, у меня были подробные ошибки, отключенные на самом высоком узле в IIS (прямо под начальной страницей, у него есть имя, которое совпадает с именем компьютера webservers). Проверьте страницы ошибок там.
нашли его.
запустить cmd от имени администратора, перейдите в папку system32\inetsrv и выполнить:
appcmd.exe set config -section:system.webServer/httpErrors -allowAbsolutePathsWhenDelegated:true
теперь я вижу подробные ошибки asp .
Если вы запустите браузер на сервере и протестируете свой url-адрес проекта с локальным ip-адресом, вы получили все ошибки этого проекта без общей страницы ошибок(например, страница 500 ошибок).