TLDR: сначала определите, где в конвейере вы получаете ошибку (прокрутите, ища скриншоты чего-то, что напоминает вашу ошибку), внесите изменения, чтобы получить что-то новое, повторите.
Сначала определите, какое сообщение об ошибке вы видите на самом деле.
Если вы видите файл, расположенный здесь ...
% SystemDrive% \ Inetpub \ custerr \\ 500.htm
... который обычно выглядит так:
... тогда вы знаете, что видите текущую настроенную страницу ошибки в ** IIS **, и вам НЕ нужно изменять настройку ASPE customErrors, настройку сведений об ошибках asp или настройку браузера "show friendly http errors".
Возможно, вы захотите взглянуть на вышеуказанный путь, а не доверять моему скриншоту на случай, если кто-то его изменил.
«Да, я вижу вышеописанную ошибку ...»
В этом случае вы видите настройку < httpErrors > или в IIS Manager это страницы ошибок -> Изменить настройки функций. По умолчанию для этого используется errorMode = DetailLocalOnly на уровне узла сервера (в отличие от уровня сайта), что означает, что, хотя вы увидите эту настроенную страницу ошибок, пока удаленно, вы сможете локально войти на сервер и увидеть полный ошибка, которая должна выглядеть примерно так:
У вас должно быть все, что вам нужно, чтобы исправить текущую ошибку.
«Но я не вижу подробных ошибок даже при просмотре на сервере»
Это оставляет пару возможностей.
- Браузер, который вы используете на сервере, настроен на использование прокси в настройках соединения, поэтому он не рассматривается как «локальный».
- Вы на самом деле не просматриваете сайт, который, как вы думаете, вы просматриваете - это обычно происходит, когда задействован балансировщик нагрузки. Выполните проверку ping, чтобы узнать, дает ли dns IP-адрес на сервере или где-то еще.
- Настройки httpErrors вашего сайта установлены только для "Custom". Измените его на «DetailLocalOnly». Однако, если у вас есть ошибка конфигурации, это может не сработать, поскольку httpErrors уровня сайта также является элементом конфигурации. В этом случае перейдите к # 4
- По умолчанию для httpErrors для всех сайтов установлено значение «Пользовательский». В этом случае вам нужно щелкнуть по узлу сервера верхнего уровня в диспетчере IIS (а не по определенному сайту) и изменить там настройки httpErrors на DetailsLocalOnly . Если это внутренний сервер и вы не беспокоитесь о разглашении конфиденциальной информации, вы также можете установить для него значение «Подробно», что позволит вам увидеть ошибку от клиентов, отличных от сервера.
- Вам не хватает модуля на сервере, такого как UrlRewrite (этот укус меня сильно кусает, и он часто выдает общее сообщение независимо от настроек httpErrors).
«Вход на сервер для меня не вариант»
Измените httpErrors вашего сайта на «Подробно», чтобы вы могли видеть его удаленно. Но если это не сработает, ваша ошибка уже может быть ошибкой конфигурации, см. № 3 непосредственно выше. Таким образом, вы можете застрять с № 4 или № 5, и вам понадобится кто-то из вашей команды сервера.
«Я не вижу страницу ошибки, описанную выше. Я вижу что-то другое»
Если вы видите это ...
... и вы ожидаете увидеть что-то подобное ...
... тогда вам нужно изменить "Отправить ошибки в браузер" на true в IIS Manager, в разделе Сайт -> IIS -> ASP -> Свойства отладки.
Если вы видите это ...
или это...
... вам нужно отключить дружественные ошибки в вашем браузере или использовать веб-просмотр fiddler, чтобы посмотреть фактический ответ против того, что ваш браузер хочет показать вам.
Если вы видите это ...
... тогда работают пользовательские ошибки, но у вас нет пользовательской страницы ошибок (конечно, в этот момент речь шла о .net, а не о классическом asp). Вам необходимо изменить тег customErrors в файле web.config на RemoteOnly для просмотра на сервере или Off для удаленного просмотра.
Если вы видите что-то в стиле вашего сайта, то, скорее всего, пользовательские ошибки включены или RemoteOnly и отображает пользовательскую страницу (например, Views-> Shared-> Error.cshtml в MVC). Тем не менее, маловероятно, но возможно, что кто-то изменил страницы в IIS для httpErrors, так что смотрите первый раздел об этом.