Come diagnosticare un errore del server interno 500 su IIS 7.5 quando non viene scritto nulla nel registro eventi?


43

Ho appena distribuito un aggiornamento a un sito ASP.NET MVC3 esistente (era già configurato) e sto ottenendo la schermata blu IIS della morte che indica

Errore HTTP 500.0 - Errore interno del server
Impossibile visualizzare la pagina perché si è verificato un errore interno del server.

Tuttavia; non viene visualizzato nulla nel registro eventi dell'applicazione in cui mi aspetterei di vedere una (più) descrizione dettagliata della voce.

Come posso fare per diagnosticare questo problema?


Ho avuto lo stesso identico problema qui. Nella mia esperienza, se il registro eventi è vuoto, la richiesta non è stata correttamente instradata al processo di lavoro. In una delle nostre recenti implementazioni abbiamo visto l'app funzionare in modo intermittente con circa il 50% delle richieste che fallivano casualmente con l'errore 500 e nulla nei registri. Ho il sospetto che qualcosa vada storto con lo scarico AppDomain che si verifica dopo la distribuzione. Per curiosità, stai eseguendo antivirus nel tuo ambiente di produzione? Un ripristino IIS risolve il problema (fino alla distribuzione successiva)?
ShadowChaser,

Risposte:


42

Dai un'occhiata alla funzione di traccia richieste non riuscite di IIS7:

Risoluzione dei problemi relativi a richieste non riuscite mediante traccia in IIS 7
Risoluzione dei problemi con traccia richieste non riuscite

L'altra cosa che vorrei fare è modificare le <httpErrors>impostazioni perché IIS potrebbe ingoiare un messaggio di errore da più in alto nella pipeline:

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

Se il sito è scritto in ASP classico, assicurati di attivare l' impostazione Invia errori al browser nella funzione di configurazione ASP:

inserisci qui la descrizione dell'immagine

E infine, se stai utilizzando Internet Explorer, assicurati di aver disattivato Mostra messaggi di errore HTTP amichevoli nelle Impostazioni avanzate (anche se sospetto che tu l'abbia già fatto o stia utilizzando un browser diverso).


2
esistentiResponse è stato impostato su Sostituisci. Grazie per il consiglio.
Greg B,

Questa è un'ottima risposta ma potrebbe essere migliorata se includesse come avviare la finestra di configurazione ASP.
Michael Potter,

13

Nel mio caso:

  • Il registro eventi era vuoto.
  • web.config non corrotto - verificato utilizzando lo stesso sul computer locale / utilizzando inetmgr

Finalmente...

  • Il controllo dei log IIS ha mostrato una richiesta come questa

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

La chiave è:

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

che con alcuni googling mi ha indicato che IIS_USRSnon ho i permessi di lettura della wwwcartella


2
Ho trovato l'elenco dei codici di stato qui: support.microsoft.com/en-us/help/943891/…
sirdank

4

Il problema più ovvio sono i diritti NTFS impropri o zero sulla cartella dell'applicazione Web. Quindi assicurati che l'account che serve il sito abbia le giuste autorizzazioni. Senza i diritti NTFS corretti per la directory web non importa cosa si inserisce in web.config in quanto non verrà mai letto.

Un rapido controllo può essere quello di dare a tutti i diritti completi: se il sito inizia a funzionare, sai che si tratta di un problema di diritti e puoi quindi impostare l'assegnazione dei diritti appropriati a un account più appropriato.


1

Se l'aggiornamento da IIS6, potrebbe essere uno dei web.config funziona su 6, ma non in IIS 7.5 ... Fai doppio clic su tutte le icone in IIS per il sito Web e potresti ricevere un errore sul formato (Sezione deve essere sotto l'altra sezione ...)


0

Ho avuto lo stesso problema con un'app Web di Azure. Durante il debug a livello locale, i messaggi di errore (JSON) restituiti dalle chiamate Ajax sono stati restituiti completamente al browser. Ma una volta distribuito sull'app Web, i messaggi sono stati ingoiati e mi è stato restituito un messaggio di errore 500 predefinito. Quindi ho dovuto impostare esplicitamente il existingResponsevalore su PassThroughnel httpErrorstag web.config .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.