Jak zdiagnozować 500 wewnętrzny błąd serwera w IIS 7.5, gdy nic nie jest zapisywane w dzienniku zdarzeń?

43

Właśnie wdrożyłem aktualizację do istniejącej witryny ASP.NET MVC3 (została już skonfigurowana) i otrzymuję niebieski ekran śmierci IIS z informacją o śmierci

Błąd HTTP 500.0 - Wewnętrzny błąd serwera
Nie można wyświetlić strony, ponieważ wystąpił wewnętrzny błąd serwera.

Jednak; nic nie pojawia się w Dzienniku zdarzeń aplikacji, w którym oczekiwałbym (bardziej) szczegółowego opisu wpisu.

Jak mogę przejść do diagnozowania tego problemu?

Greg B.
źródło
Miałem tutaj dokładnie ten sam problem. Z mojego doświadczenia wynika, że ​​jeśli dziennik zdarzeń jest pusty, to żądanie nie zostało poprawnie przekierowane do procesu roboczego. W jednym z naszych ostatnich wdrożeń widzieliśmy, że aplikacja działa sporadycznie, a około 50% żądań losowo kończy się niepowodzeniem z błędem 500 i nic w dziennikach. Podejrzewam, że coś idzie nie tak z odciążaniem AppDomain, które występuje po wdrożeniu. Z ciekawości, czy uruchamiasz program antywirusowy w środowisku produkcyjnym? Czy reset IIS rozwiązuje problem (do następnego wdrożenia)?
ShadowChaser

Odpowiedzi:

41

Spójrz na funkcję śledzenia nieudanych żądań IIS7:

Rozwiązywanie problemów z nieudanymi żądaniami za pomocą śledzenia w IIS 7
Rozwiązywanie problemów z nieudanym śledzeniem żądań

Inną rzeczą, którą bym zrobił, jest poprawienie twojego <httpErrors>ustawienia, ponieważ IIS może połykać komunikat o błędzie z dalszej części potoku:

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

Jeśli witryna jest napisana w klasycznej ASP, pamiętaj, aby włączyć ustawienie Wyślij błędy do przeglądarki w funkcji konfiguracji ASP:

wprowadź opis zdjęcia tutaj

I na koniec, jeśli używasz Internet Explorera, upewnij się, że wyłączyłeś Pokaż przyjazne komunikaty o błędach HTTP w Ustawieniach zaawansowanych (chociaż podejrzewam, że już to zrobiłeś lub używasz innej przeglądarki).

Kev
źródło
2
istniejąca odpowiedź została ustawiona na Zamień. Dzięki za wskazówkę.
Greg B,
To bardzo dobra odpowiedź, ale można ją poprawić, jeśli zawiera ona sposób uruchomienia okna konfiguracji ASP.
Michael Potter,
13

W moim przypadku:

  • Dziennik zdarzeń był pusty.
  • web.config nie został uszkodzony - zweryfikowany przy użyciu tego samego na komputerze lokalnym / przy użyciu inetmgr

Wreszcie...

  • Sprawdzanie dzienników IIS pokazało takie żądanie

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

Kluczem jest:

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

co przy pewnym googlowaniu wskazało mi, że IIS_USRSnie mam uprawnień do odczytu wwwfolderu

placet
źródło
2
Znalazłem listę kodów stanu tutaj: support.microsoft.com/en-us/help/943891/...
sirdank
4

Najbardziej oczywistym problemem jest niewłaściwe lub zerowe prawa NTFS do folderu aplikacji internetowej. Upewnij się więc, że konto obsługujące witrynę ma odpowiednie uprawnienia. Bez odpowiednich praw NTFS do katalogu internetowego nie ma znaczenia, co umieścisz w pliku web.config, ponieważ nigdy nie zostanie on odczytany.

Szybkim sprawdzeniem może być przyznanie wszystkim pełnych praw - jeśli witryna zacznie działać, wiesz, że to problem z prawami, i możesz następnie przypisać odpowiednie prawa do bardziej odpowiedniego konta.

rism
źródło
1

Jeśli aktualizujesz z IIS6, może to być jeden z web.config działa na 6, ale nie w IIS 7.5 ... Kliknij dwukrotnie wszystkie ikony w IIS dla strony internetowej i możesz otrzymać błąd dotyczący formatu (sekcja musi znajdować się poniżej innej sekcji ...)

M Hall
źródło
0

Miałem ten sam problem z aplikacją Azure Web App. Podczas lokalnego debugowania komunikaty o błędach (JSON) zwrócone z wywołań ajax zostały w pełni zwrócone do przeglądarki. Ale po wdrożeniu w aplikacji sieciowej wiadomości zostały połknięte i zwrócono mi domyślny komunikat o błędzie 500. Musiałem więc jawnie ustawić tę existingResponsewartość na tag PassThroughweb.config httpErrors.

Loul G.
źródło