Cum se diagnostichează o eroare 500 Internal Server Error pe IIS 7.5 atunci când nu se scrie nimic în jurnalul de evenimente? (Administrarea sistemului, Iis 7.5, Jurnal De Evenimente Windows, Eroare 500, Asp.Net Mvc)

Greg B a intrebat.
a intrebat.

Tocmai am implementat o actualizare la un site ASP.NET MVC3 existent (era deja configurat) și am primit ecranul albastru al morții IIS, care spune următoarele

Eroare HTTP 500.0 – Eroare internă a serverului
Pagina nu poate fi afișată deoarece a apărut o eroare internă a serverului.

Cu toate acestea; nu apare nimic în jurnalul de evenimente al aplicației, unde m-aș aștepta să văd o descriere (mai) detaliată a intrării.

Cum aș putea să diagnostichez această problemă?

Comentarii

  • Am avut exact aceeași problemă aici. Din experiența mea, dacă jurnalul de evenimente este gol, înseamnă că cererea nu a fost direcționată corect către procesul de lucru. Într-una dintre implementările noastre recente, am văzut că aplicația funcționează intermitent, aproximativ 50% dintre cereri eșuând aleatoriu cu eroarea 500 și nimic în jurnale. Bănuiesc că ceva nu merge bine cu descărcarea AppDomain care are loc după implementare. Din curiozitate, aveți un antivirus în mediul de producție? O resetare a IIS rezolvă problema (până la următoarea implementare)? –  > Por ShadowChaser.
5 răspunsuri
Kev

Aruncați o privire la funcția de urmărire a cererilor eșuate din IIS7:

Depanarea solicitărilor eșuate utilizând urmărirea în IIS 7
Rezolvarea problemelor cu urmărirea cererilor eșuate

Celălalt lucru pe care l-aș face ar fi să ajustez <httpErrors> pentru că este posibil ca IIS să înghită un mesaj de eroare de la un punct mai sus:

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

Dacă site-ul este scris în Classic ASP, atunci asigurați-vă că activați opțiunea Send Errors to Browser în cadrul funcției de configurare ASP:

Și în cele din urmă, dacă folosiți Internet Explorer, asigurați-vă că ați dezactivat opțiunea Afișarea mesajelor de eroare HTTP prietenoase în setările avansate (deși bănuiesc că ați făcut deja acest lucru sau că utilizați un alt browser).

Comentarii

  • existingResponse a fost setat la Replace. Vă mulțumim pentru pont. –  > Por Greg B.
  • Acesta este un răspuns foarte bun, dar ar putea fi îmbunătățit dacă ar include modul de pornire a ferestrei de configurare ASP. –  > Por Fiți amabili cu noii utilizatori.
fiat

În cazul meu:

  • Jurnalul de evenimente era gol.
  • web.config nu era corupt – verificat folosind același lucru pe mașina locală / folosind inetmgr

În cele din urmă…

  • Verificarea jurnalelor IIS a arătat o cerere de genul acesta

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

Cheia fiind:

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

care, cu câteva căutări pe Google, m-a condus la IIS_USRS nu avea permisiuni de citire pentru www dosar

Comentarii

rism

Cea mai evidentă problemă este drepturile NTFS necorespunzătoare sau zero pe folderul aplicației web. Așadar, asigurați-vă că contul care deservește site-ul are permisiunile corecte. Fără drepturi NTFS corespunzătoare la directorul web, nu contează ce ați pus în web.config, deoarece nu va fi citit niciodată.

O verificare rapidă poate fi aceea de a acorda tuturor drepturi depline – dacă site-ul începe să funcționeze, atunci știți că este o problemă de drepturi și puteți apoi să vă apucați să atribuiți drepturile corespunzătoare unui cont mai adecvat.

M Hall

Dacă faceți upgrade de la IIS6, atunci s-ar putea să fie unul dintre cele web.config funcționează pe 6, dar nu și în IIS 7.5 … Faceți dublu clic pe toate pictogramele din IIS pentru site-ul web și este posibil să primiți o eroare privind formatul (Secțiunea trebuie să fie sub altă secțiune…)

Loul G.

Am avut aceeași problemă cu o aplicație web Azure Web App. În timpul depanării la nivel local, mesajele de eroare (JSON) returnate de la apelurile ajax erau returnate integral în browser. Dar, odată implementate în Web App, mesajele au fost înghițite și mi s-a returnat un mesaj de eroare implicit 500. Așa că a trebuit să setez explicit existingResponse valoarea la PassThrough în web.config httpErrors tag.