TLDR: Спочатку визначте, звідки в конвеєрі ви отримуєте помилку (прокрутіть пошуки скріншотів чимось, що нагадує вашу помилку), внесіть зміни, щоб отримати щось нове, повторіть.
Спочатку визначте, яке повідомлення про помилку ви насправді бачите.
Якщо ви бачите файл, розташований тут ...
% SystemDrive% \ inetpub \ custerr \\ 500.htm
... що зазвичай виглядає так:
... тоді ви знаєте, що у ** IIS ** ви бачите поточно налаштовану сторінку помилок, і вам НЕ потрібно змінювати налаштування ASP.net customErrors, налаштування деталей помилок asp або налаштування браузера "показувати дружні помилки http".
Ви можете подивитися на вказаний вище шлях замість того, щоб довіряти моєму екрану на випадок, якщо хтось змінив його.
"Так, я бачу описану вище помилку ..."
У цьому випадку ви бачите налаштування < httpErrors > або в IIS Manager це сторінки помилок -> Редагувати параметри функції. Типовою умовою для цього є errorMode = DetailedLocalOnly на рівні вузла сервера (на відміну від рівня сайту), що означає, що ви будете бачити цю налаштовану сторінку помилок під час віддаленого доступу, ви повинні мати можливість увійти локально на сервер і побачити повну помилка, яка має виглядати приблизно так:
Ви повинні мати все, що вам потрібно, щоб виправити поточну помилку.
"Але я не бачу детальної помилки навіть при перегляді на сервері"
Це залишає пару можливостей.
- Веб-браузер, який ви використовуєте на сервері, налаштований на використання проксі-сервера в налаштуваннях підключення, тому він не сприймається як "локальний".
- Ви насправді не переглядаєте той веб-сайт, на який ви думаєте, що переглядаєте - це часто трапляється, коли є балансир навантаження. Зробіть перевірку ping, щоб побачити, чи dns дає вам IP на сервері чи десь ще.
- Налаштування httpErrors для вашого веб-сайту встановлено лише для "Custom". Змініть його на "DetailedLocalOnly". Однак якщо у вас є помилка конфігурації, це може не працювати, оскільки httpErrors на рівні сайту також є елементом конфігурації. У такому випадку переходите до №4
- За замовчуванням для httpErrors для всіх сайтів встановлено "Custom". У цьому випадку вам потрібно натиснути вузол сервера верхнього рівня в IIS Manager (а не конкретному сайті) та змінити там налаштування httpErrors на DetailedLocalOnly. Якщо це внутрішній сервер і ви не переживаєте про розкриття конфіденційної інформації, ви також можете встановити його на "Детально", що дозволить побачити помилку від інших клієнтів, крім сервера.
- Вам не вистачає такого модуля на сервері, як UrlRewrite (цей мене дуже кусає, і він часто дає загальне повідомлення незалежно від налаштувань httpErrors).
"Вхід на сервер - це не варіант для мене"
Змініть httpErrors вашого сайту на "Детально", щоб ви могли його бачити віддалено. Але якщо це не працює, ваша помилка може вже бути помилкою конфігурації, дивіться №3 безпосередньо вище. Таким чином, ви можете застрягти з №4 або №5, і вам знадобиться хтось із вашої команди сервера.
"Я не бачу описаної вище сторінки помилок. Я бачу щось інше"
Якщо ви бачите це ...
... і ви очікуєте побачити щось подібне ...
... тоді вам потрібно змінити "Надіслати помилки в браузері" на "Істинне" в Менеджері IIS, в розділі Сайт -> IIS -> ASP -> Властивості налагодження
Якщо ви бачите це ...
або це ...
... вам потрібно вимкнути дружні помилки у веб-переглядачі або скористатися веб-переглядом скрипта, щоб переглянути реальну відповідь та те, що ваш браузер вирішив вам показати.
Якщо ви бачите це ...
... тоді користувацькі помилки працюють, але у вас немає користувальницької сторінки помилок (звичайно, в цей момент говорили про .net, а не про класичний asp). Потрібно змінити свій тег customErrors у веб-конфізі на RemoteOnly для перегляду на сервері або Вимкнено, щоб переглянути дистанційно.
Якщо ви бачите щось у стилі вашого веб-сайту, то ймовірні помилки, ймовірно, увімкнено або віддалено, і на ньому відображається користувацька сторінка (наприклад, Перегляд-> Спільний-> Помилка.cshtml у MVC). Однак це навряд чи можливо, що хтось змінив сторінки в IIS для httpErrors, тому дивіться перший розділ про це.