Подробное сообщение об ошибке 500, ASP + IIS 7.5

IIS 7.5, 2008rc2, классический asp, 500 ошибка msg:

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

Мне нужно знать, как настроить IIS для получения более подробной ошибки.
Я попытался установить значение true для всех параметров отладки в конфигурации ASP.
Но это не сработало. Кто-нибудь может мне помочь?

12 ответов


Я пришел к той же проблеме и исправил так же, как Алекс K.

поэтому, если" отправить ошибки в браузер " не работает, установите также это:

Страницы Ошибок - > 500 - > Изменить Настройки Функций - > "Подробные Ошибки"

enter image description here

также обратите внимание, что если содержимое страницы ошибок, отправленной обратно, довольно короткое, и вы используете 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).


после Вацлава и Алекс ответ, мне все равно пришлось отключить "показывать дружественные сообщения об ошибках HTTP" в IE

enter image description here


на 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 Default 500 error

...тогда вы знаете, что видите настроенную страницу ошибок в * * IIS * * и вам не нужно изменять настройки customErrors, настройки ASP error detail или настройки браузера "показать дружественные ошибки http".

вы можете посмотреть на указанный выше путь, а не доверять моему скриншоту на случай, если кто-то его изменил.

" Да, я вижу вышеописанное ошибка..."

в этом случае, вы видите настройку httpErrors> или в диспетчере IIS это Страницы Ошибка -- > "Редактировать Параметры Объекта". По умолчанию для этого используется errorMode=DetailedLocalOnly в уровень узла сервера (в отличие от уровня сайта) это означает, что, хотя вы увидите эту настроенную страницу ошибок на удаленном компьютере, вы сможете локально войти на сервер и увидеть полную ошибку, которая должна выглядеть примерно так это:

Detailed HTTP Error

У вас должно быть все, что вам нужно в этот момент, чтобы исправить текущую ошибку.

"но я не вижу подробной ошибки даже при просмотре на сервере"

Это оставляет пару возможностей.

  1. браузер вы используете на сервере настроен на использование прокси-сервера в его настройках подключения он не рассматривается как "локальный".
  2. вы на самом деле не сидя в сайт, на который вы просматриваете-это обычно происходит, когда задействован балансировщик нагрузки. Выполните проверку ping, чтобы узнать, дает ли dns вам IP-адрес на сервере или где-то еще.
  3. Вы сайт httpErrors настройки установлены только для" Custom". Измените его на "DetailedLocalOnly". Однако при возникновении ошибки конфигурации это может не сработать, так как httpErrors уровня сайта также является элементом конфигурации. В этом случае перейдите к #4
  4. по умолчанию для httpErrors для всех сайтов установлено значение "Custom". В этом случае вам нужно нажать на серверный узел верхнего уровня в диспетчере IIS (а не на конкретный сайт) и изменить httpErrors настройки там для DetailedLocalOnly. Если это внутренний сервер, и вы не беспокоитесь о разглашении конфиденциальной информации, вы также можете установить его на "подробный", который позволит вам увидеть ошибку от клиентов, отличных от сервера.

"вход в сервер не является вариантом для меня"

измените свой сайт httpErrors "подробно", чтобы вы могли видеть его удаленно. Но если это не работает, ваша ошибка уже может быть ошибкой конфигурации, см. #3 непосредственно выше. Таким образом, вы можете застрять с #4, и вам понадобится кто-то из вашей команды серверов.

" Я не вижу страницу ошибки, описанную выше. Я вижу что-то другое"

если вы видите этот...

enter image description here

...и вы ожидаете увидеть нечто подобное...

enter image description here

...затем вам нужно изменить "отправить ошибки в браузер" на true в диспетчере IIS в разделе Site --> IIS --> ASP --> Debugging Properties

если вы видите эту...

ie friendly errors 1

или это...

ie friendly errors 2

...вам нужно отключите дружественные ошибки в вашем браузере или используйте WebView fiddler, чтобы посмотреть на актуальный ответ vs, что ваш браузер выбирает, чтобы показать вам.

Если вы видите эту...

Custom errors enabled

...тогда пользовательские ошибки работают, но у вас нет пользовательской страницы ошибок (конечно, на данный момент речь шла о .net, а не о классическом asp). Вам нужно изменить тег customErrors в вашем интернете.config to RemoteOnly для просмотра на сервере, или Выключено для удаленного просмотра.

Если вы видите что-то, что стилизовано как ваш сайт, то пользовательские ошибки, вероятно, On или RemoteOnly, и он отображает пользовательскую страницу (представления->общий - >ошибка.например, cshtml в MVC). Тем не менее, маловероятно, но возможно, что кто-то изменил страницы в IIS для httpErrors, поэтому см. Первый раздел об этом.


одна вещь, о которой никто не упоминал, - это очень быстрое и временное исправление, вы можете просмотреть ошибку на localhost этого веб-сервера.


вы также можете проверить, что если вы изменили свою основную папку веб-сайта (c:\inetpub\wwwroot) в другую папку, вы должны дать разрешение на чтение группа IIS_IUSRS в новой папке.


Fot люди, которые пробовали все и просто не могут получить детали ошибки, чтобы показать, как я, это хорошая идея, чтобы проверить различные уровни конфигурации. У меня есть файл конфигурации на уровне сайта и на уровне приложения (внутри сайта) проверить обоих. Кроме того, как оказалось, у меня были подробные ошибки, отключенные на самом высоком узле в IIS (прямо под начальной страницей, у него есть имя, которое совпадает с именем компьютера webservers). Проверьте страницы ошибок там.


нашли его.

http://blogs.iis.net/ksingla/archive/2009/02/16/iis-7-5-updates-to-custom-errors-and-compression.aspx

запустить cmd от имени администратора, перейдите в папку system32\inetsrv и выполнить:

appcmd.exe set config -section:system.webServer/httpErrors -allowAbsolutePathsWhenDelegated:true

теперь я вижу подробные ошибки asp .


Если вы запустите браузер на сервере и протестируете свой url-адрес проекта с локальным ip-адресом, вы получили все ошибки этого проекта без общей страницы ошибок(например, страница 500 ошибок).