Messaggio di errore dettagliato 500, ASP + IIS 7.5

IIS 7.5, 2008rc2, classic asp, 500 error msg:

La pagina non può essere visualizzata perché si è verificato un errore interno del server.

Devo sapere come configurare IIS per ottenere un errore più dettagliato.
Ho provato a impostare tutte le opzioni di debug nella configurazione ASP.
Ma quello non ha funzionato. Qualcuno può aiutarmi?

Sono giunto allo stesso problema e risolto allo stesso modo di Alex K.

Quindi se “Invia errori al browser” non funziona imposta anche questo:

Pagine di errore -> 500 -> Modifica impostazioni funzione -> “Errori dettagliati”

inserisci la descrizione dell'immagine qui

Si noti inoltre che se il contenuto della pagina di errore restituito è piuttosto breve e si sta utilizzando IE, IE ignorerà felicemente il contenuto utile inviato dal server e mostrerà invece la propria pagina di errore generica. Puoi distriggersrlo nelle opzioni di IE o utilizzare un altro browser.

Se sei su un server remoto puoi configurare il tuo file web.config in questo modo:

          

Fare doppio clic su “ASP” nella schermata Home del sito nell’amministratore di IIS, espandere “Proprietà di debug”, abilitare “Invia errori al browser” e fare clic su “Applica”.

Sotto “Pagine di errore” nella schermata principale selezionare “500”, quindi “Modifica impostazioni funzione” e selezionare “Errori dettagliati”.

Notare che gli stessi passaggi si applicano a IIS 8.0 (Windows Server 2012).

Dopo aver provato la risposta di Vaclav e Alex , dovevo ancora disabilitare “Mostra messaggi di errore HTTP amichevoli” in IE

inserisci la descrizione dell'immagine qui

In web.config sotto

  

sostituire (o aggiungere) la linea

  

con

  

Questo perché di default IIS7 intercetta i codici di stato HTTP come 4xx e 5xx generati dalle applicazioni più in alto nella pipeline.

Quindi, abilitare ” Invia errori al browser ” nella sezione “ASP” e in ” Pagine errore / Modifica impostazioni funzione “, selezionare “Errori dettagliati”.

Inoltre, concedere autorizzazioni di scrittura per la cartella del sito Web al gruppo incorporato IIS_IUSRS .

prova a impostare il valore dell’attributo httpErrors “existingResponse” su “PassThrough”. Il mio era impostato su “Sostituisci”, il che stava causando la mancata visualizzazione di YSOD.

  

TLDR: per prima cosa determina da dove nella pipeline stai ricevendo l’errore (cerca gli screenshot di qualcosa che assomiglia al tuo errore), apporta le modifiche per ottenere qualcosa di nuovo, ripeti.

Determinare innanzitutto quale messaggio di errore si sta effettivamente visualizzando.

Se vedi il file che si trova qui …

% SystemDrive% \ inetpub \ custerr \\ 500.htm

… che in genere assomiglia a questo:

Errore predefinito di IIS 500

… quindi sai che stai visualizzando la pagina di errore attualmente configurata in ** IIS ** e NON devi modificare l’impostazione di CustomErrors, l’impostazione dei dettagli dell’errore di asp o l’impostazione del browser “mostra errori amichevoli HTTP”.

Potresti voler guardare il percorso di riferimento sopra invece di fidarti del mio screenshot nel caso qualcuno lo cambiasse.

“Sì, vedo l’errore sopra descritto …”

In questo caso, viene visualizzata l’impostazione di < httpErrors > o in Gestione IIS sono Pagine di errore -> Modifica impostazioni funzione. L’impostazione predefinita per questo è errorMode = DetailedLocalOnly a livello di nodo del server (a differenza del livello del sito), il che significa che mentre si vedrà questa pagina di errore configurata mentre è remoto, si dovrebbe essere in grado di accedere localmente al server e vedere il completo errore che dovrebbe assomigliare a questo:

Errore HTTP dettagliato

Dovresti avere tutto ciò di cui hai bisogno a quel punto per correggere l’errore corrente.

“Ma non vedo l’errore dettagliato nemmeno sfogliando il server”

Questo lascia un paio di possibilità.

  1. Il browser che si sta utilizzando sul server è configurato per utilizzare un proxy nelle impostazioni di connessione in modo che non venga visualizzato come “locale”.
  2. In realtà non stai navigando nel sito che pensi di navigare: ciò accade comunemente quando è coinvolto un load balancer. Fai un controllo ping per vedere se dns ti dà un IP sul server o da qualche altra parte.
  3. Le impostazioni httpErrors del sito sono impostate solo per “Personalizzato”. Cambiarlo in “DetailedLocalOnly”. Tuttavia, se si verifica un errore di configurazione, questo potrebbe non funzionare poiché il livello httpErrors del sito è anche un elemento di configurazione. In tal caso, procedere al n. 4
  4. L’impostazione predefinita per httpErrors per tutti i siti è impostata su “Personalizzato”. In questo caso è necessario fare clic sul nodo del server di livello superiore in IIS Manager (e non su un sito specifico) e modificare le impostazioni httpErrors in DetailedLocalOnly. Se si tratta di un server interno e non sei preoccupato di divulgare informazioni sensibili, puoi anche impostarlo su “Dettagliato” che ti permetterà di vedere l’errore da client diversi dal server.

“L’accesso al server non è un’opzione per me”

Modifica httpErrors del tuo sito su “Dettagliato” in modo che tu possa vederlo da remoto. Ma se non funziona il tuo errore potrebbe già essere un errore di configurazione, vedi n. 3 immediatamente sopra. Quindi potresti essere bloccato con # 4 e avrai bisogno di qualcuno dal tuo team di server.

“Non vedo la pagina di errore sopra descritta, sto vedendo qualcosa di diverso”

Se vedi questo …

inserisci la descrizione dell'immagine qui

… e ti aspetti di vedere qualcosa di simile …

inserisci la descrizione dell'immagine qui

… quindi è necessario modificare “Invia errori al browser” su true in Gestione IIS, in Sito -> IIS -> ASP -> Proprietà di debug

Se vedi questo …

cioè errori amichevoli 1

o questo…

cioè errori amichevoli 2

… devi disabilitare gli errori amichevoli nel tuo browser o utilizzare la webview di Fiddler per esaminare la risposta effettiva rispetto a ciò che il tuo browser sceglie di mostrarti.

Se vedi questo …

Errori personalizzati abilitati

… poi gli errori personalizzati stanno funzionando ma non hai una pagina di errore personalizzata (ovviamente a questo punto parlavamo di .net e non di asp classico). È necessario modificare il tag customErrors in web.config su RemoteOnly per visualizzarlo sul server o su Off per visualizzare in remoto.

Se vedi qualcosa di simile al tuo sito, allora gli errori personalizzati sono probabilmente On o RemoteOnly e visualizza la pagina personalizzata (Views-> Shared-> Error.cshtml in MVC ad esempio). Detto questo, è improbabile, ma ansible che qualcuno abbia cambiato le pagine in IIS per httpErrors, quindi guarda la prima sezione.

Una cosa che nessuno ha menzionato è una correzione molto rapida e temporanea, è ansible visualizzare l’errore sul localhost di quel server web.

È inoltre ansible verificare che se è stata modificata la cartella del sito Web principale ( c:\inetpub\wwwroot ) in un’altra cartella, è necessario fornire il permesso di lettura al gruppo IIS_IUSRS nella nuova cartella.

Le persone che hanno provato TUTTO e non riescono a visualizzare i dettagli degli errori, come me, è una buona idea controllare i diversi livelli di configurazione. Ho un file di configurazione a livello di sito Web e a livello di applicazione (all’interno del sito Web) controllare entrambi. Inoltre, come risultato, ho avuto errori dettagliati disabilitati sul nodo più alto in IIS (appena sotto la pagina iniziale, ha il nome che è lo stesso del nomecomputer webserver). Controlla le pagine di errore lì.

Trovato.

http://blogs.iis.net/ksingla/archive/2009/02/16/iis-7-5-updates-to-custom-errors-and-compression.aspx

esegui cmd come amministratore, vai alla tua cartella system32 \ inetsrv ed esegui:

 appcmd.exe set config -section:system.webServer/httpErrors -allowAbsolutePathsWhenDelegated:true 

Ora posso vedere gli errori dettagliati di asp.

Se si esegue il browser nel server e si verifica l’url del progetto con l’ip locale, si sono ricevuti tutti gli errori di quel progetto senza una pagina di errore generale (ad esempio una pagina di 500 errori).