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

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

Невозможно отобразить страницу, поскольку произошла ошибка внутреннего сервера.

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

Ответ 1

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

Итак, если "Отправить ошибки для браузера" не работает, установите также:

Страницы ошибок → 500 → Изменить настройки параметров → "Подробные ошибки"

enter image description here

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

Ответ 2

Если вы находитесь на удаленном сервере, вы можете настроить файл web.config следующим образом:

<configuration>
<system.webServer>
    <httpErrors errorMode="Detailed" />
    <asp scriptErrorSentToBrowser="true"/>
</system.webServer>
<system.web>
    <customErrors mode="Off"/>
    <compilation debug="true"/>
</system.web>

Ответ 3

Дважды щелкните "ASP" на главном экране сайта в администраторе IIS, разверните "Свойства отладки", включите "Отправить ошибки в браузере" и нажмите "Применить".

В разделе "Страницы ошибок" на главном экране выберите "500", затем "Редактировать настройки параметров" и выберите "Подробные ошибки".

Обратите внимание, что для IIS 8.0 (Windows Server 2012) применяются те же шаги.

Ответ 4

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

enter image description here

Ответ 5

В web.config в

<system.webServer>

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

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

с

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

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

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

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

Ответ 6

попробуйте установить значение атрибута httpErrors "existingResponse" в значение "PassThrough". Шахта была установлена ​​в положение "Заменить", из-за чего YSOD не отображался.

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

Ответ 7

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

Ответ 8

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

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

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

% SystemDrive%\Inetpub\custerr\\500.htm

... который обычно выглядит следующим образом:

Ошибка по умолчанию 500 IIS

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

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

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

В этом случае вы видите настройку < httpErrors > или в диспетчере IIS Страницы ошибок → Изменить настройки параметров. По умолчанию это errorMode = DetailedLocalOnly на уровне сервера node (в отличие от уровня сайта), что означает, что пока вы увидите эту страницу с ошибкой при удалении, вы должны иметь возможность регистрировать на локальном сервере и увидеть полную ошибку, которая должна выглядеть примерно так:

Подробная ошибка HTTP

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

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

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

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

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

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

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

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

введите описание изображения здесь

... и вы ожидаете увидеть что-то вроде этого...

введите описание изображения здесь

... тогда вам нужно изменить "Отправить ошибки в браузере" в true в диспетчере IIS, в разделе "Сайты" → IIS → ASP → Свойства отладки

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

введите описание изображения здесь

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

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

Пользовательские ошибки включены

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

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

Ответ 9

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

Ответ 10

Fot люди, которые пробовали ВСЕ, и просто НЕ МОГУТ получить данные об ошибках, чтобы показать, как и я, неплохо проверить разные уровни конфигурации. У меня есть файл конфигурации на уровне веб-сайта и на уровне приложения (внутри веб-сайта) проверьте оба. Кроме того, как выяснилось, у меня были детализированные ошибки на самом высоком node в IIS (прямо под стартовой страницей, у него есть имя, такое же, как имя пользователя webservers). Проверьте там страницы ошибок.