Як діагностувати 500 внутрішніх помилок сервера на IIS 7.5, коли нічого не записується в журнал подій?


43

Я щойно розгорнув оновлення на існуючий сайт ASP.NET MVC3 (він уже налаштований), і я отримую синій екран смерті IIS із зазначенням

Помилка HTTP 500.0 - Внутрішня помилка сервера
Сторінку неможливо відобразити, оскільки сталася внутрішня помилка сервера.

Однак; нічого не відображається в Журналі подій програми, де я б очікував (детальніше) опис цього запису.

Як мені зайнятися діагностикою цього питання?


У мене тут було саме таке питання. На мій досвід, якщо журнал подій порожній, запит не був правильно перенаправлений до робочого процесу. В одному з наших останніх розгортань ми побачили, що додаток працює з перервами, приблизно 50% запитів випадковим чином не вдається з помилкою 500 і нічого не складається в журналах. Я підозрюю, що з вивантаженням AppDomain, що відбувається після розгортання, щось не так. З цікавості ви запускаєте антивірус у виробничих умовах? Чи перезавантаження IIS вирішує проблему (до наступного розгортання)?
ShadowChaser

Відповіді:


41

Подивіться на функцію відстеження невдалого запиту IIS7:

Усунення несправностей Невдалі запити за допомогою відстеження в IIS 7
Виправлення неполадок із відстеженням невдалого запиту

Інша річ, яку я б зробив, це налаштувати ваші <httpErrors>налаштування, тому що IIS може проковтнути повідомлення про помилку від подальшого вгору конвеєра:

<configuration>
  <system.webServer>
    <httpErrors existingResponse="PassThrough" />
  </system.webServer>
</configuration>

Якщо сайт написано класичним ASP, тоді обов'язково увімкніть налаштування " Відправити помилки до браузера " у функції конфігурації ASP:

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

І нарешті, якщо ви користуєтесь Internet Explorer, тоді переконайтесь, що ви вимкнули Показувати дружні повідомлення про помилки HTTP у розширених налаштуваннях (хоча я підозрюю, що ви це вже робили або використовуєте інший браузер).


2
існуючий Резонс встановлено на Замінити. Дякую за пораду.
Грег Б

Це дуже хороша відповідь, але її можна було б покращити, якби вона включала, як запустити вікно налаштування ASP.
Майкл Поттер

13

У моєму випадку:

  • Журнал подій був порожнім.
  • web.config не пошкоджено - перевірено за допомогою того ж на локальній машині / за допомогою inetmgr

Нарешті ...

  • Перевірка журналів IIS показала такий запит

...Chrome/57.0.2987.133+Safari/537.36 500 19 5 312

Ключове значення:

sc-status sc-substatus sc-win32-status 500 19 5

що з деяким гуглінг вказав мені на те, що я IIS_USRSне читав дозволів до wwwпапки


2
Список кодів статусу я знайшов тут: support.microsoft.com/en-us/help/943891/…
sirdank

4

Найбільш очевидною проблемою є неправильне або нульове значення NTFS у папці веб-додатків. Тому переконайтеся, що обліковий запис, що обслуговує сайт, має правильні дозволи. Без належних прав NTFS на веб-каталог це не має значення, що ви ставите в web.config, оскільки він ніколи не буде прочитаний.

Швидкий перевір можна надати всім повним правам - якщо сайт почне працювати, то ви знаєте, що це проблема з правами, а потім можете розпочати присвоєння відповідних прав більш підходящому обліковому запису.


1

Якщо оновлення до IIS6, то, можливо, одна з web.config працює на 6, але не в IIS 7.5 ... Двічі клацніть на всіх піктограмах IIS для веб-сайту, і ви можете отримати помилку щодо формату (Розділ має бути нижче іншого розділу ...)


0

У мене була така ж проблема з веб-додатком Azure. Під час налагодження локально, повідомлення про помилки (JSON), що поверталися з викликів ajax, були повністю повернені до браузера. Але після розгортання у веб-додатку повідомлення проковтнули, і мені було повернуто повідомлення про помилку 500 за замовчуванням. Тому мені довелося явно встановити existingResponseзначення PassThroughв httpErrorsтезі web.config .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.