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



IIS 7.5, 2008rc2, classic asp, 500 ошибка msg:




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




Мне нужно знать, как настроить IIS, чтобы получить более подробную ошибку.

Я попытался установить значение true для всех параметров отладки в конфигурации ASP.

Но это не сработало. Кто-нибудь может мне помочь?

832   12  

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.конфигурации под

<system.webServer>

заменить (или добавить) строку

<httpErrors errorMode="Detailed"></httpErrors>

С

<httpErrors existingResponse="PassThrough" errorMode="Detailed"></httpErrors>

это связано с тем, что по умолчанию IIS7 перехватывает коды состояния HTTP, такие как 4xx и 5xx, генерируемые приложениями далее по конвейеру.

далее включить "выводить ошибки в браузер "в разделе" ASP "и в разделе"Страницы Ошибок / Редактировать Настройки Функций", выбираем "вся ошибки."

также запись в папке веб-сайта в группу iis_iusrs встроенные группы.

попробуйте установить значение атрибута httpErrors "existingResponse"в " PassThrough". Мой был установлен на "Replace", что заставляло YSOD не отображаться.

<httpErrors errorMode="Detailed" existingResponse="PassThrough">

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

сначала определите, какое сообщение об ошибке вы на самом деле видите.

Если вы видите файл, расположенный здесь...

%SystemDrive%\inetpub\custerr\\500.htm

...который обычно выглядит так это:

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

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

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

Custom errors enabled

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

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

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

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

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

нашли его.

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 страниц ошибок).

Comments

    Ничего не найдено.