Al momento sei offline in attesa che la connessione Internet venga ristabilita

Registrazione degli errori nelle API HTTP

Sommario
In questo articolo vengono descritte le funzionalità di registrazione degli errori delle API HTTP (Hypertext Transfer Protocol).

Alcuni errori che si verificano in un'applicazione basata su HTTP vengono automaticamente gestiti dall'API HTTP invece di essere passati nuovamente all'applicazione per la gestione. Questo comportamento si verifica perché la frequenza di tali errori potrebbe, in caso contrario, provocare il flooding di un log eventi o di un gestore dell'applicazione.

Negli argomenti seguenti sono illustrati i vari aspetti della registrazione degli errori nelle API HTTP:
Informazioni

Configurazione della registrazione degli errori nelle API HTTP

Per consentire la configurazione della registrazione degli errori nelle API HTTP, andare alla sezione "Correzione automatica". Per configurare autonomamente la registrazione degli errori nelle API HTTP, andare alla sezione "Consenti correzione manuale".

Correzione automatica



Per risolvere il problema automaticamente, fare clic sul collegamento o sul pulsante Risolvi. Fare clic su Esegui nella finestra di dialogo Download file e attenersi alla procedura guidata Fix it.



Note
  • Questa procedura guidata è disponibile solo in lingua inglese. La correzione automatica, tuttavia, funziona anche per versioni di Windows in altre lingue.
  • Se non si sta utilizzando il computer che presenta il problema, è possibile salvare la soluzione Fix it su un'unità di memoria flash o su un CD ed eseguirla sul computer interessato dal problema.



Correzione manuale

La registrazione degli errori nelle API HTTP è controllata mediante tre valori di una chiave HTTP \Parameters del Registro di sistema. Tali valori sono contenuti nella seguente chiave del Registro di sistema:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
Nota: il percorso e il formato dei valori di configurazione può variare nelle versioni più recenti del sistema operativo Microsoft Windows.

Per modificare i valori del Registro di sistema e per visualizzare o modificare i file di registro e le cartelle in cui sono contenuti è necessario disporre delle credenziali dell'amministratore o dell'account di sistema locale.

Le informazioni di configurazione contenute nei valori di registro vengono lette all'avvio del driver API HTTP. Pertanto, se si modificano le impostazioni, è necessario interrompere il driver e riavviarlo affinché i nuovi valori vengano letti. Per effettuare questa operazione, digitare i seguenti comandi di console:
net stop http
net start http
Per l'assegnazione dei nomi ai file di registro viene utilizzata la seguente convenzione di denominazione:
httperr + numero sequenza + .log
Esempio: httperr4.log
Si ha il passaggio al file di registro successivo della sequenza ogni volta che un file di registro raggiunge la dimensione massima specificata nel valore di registro ErrorLogFileTruncateSize. Questo valore non può essere inferiore a un megabyte (MB).

Se la configurazione della registrazione degli errori non è valida o se si verifica un errore durante la scrittura dei file di registro da parte dell'API HTTP, verrà utilizzata la registrazione degli eventi dell'API HTTP per notificare agli amministratori la mancata esecuzione della registrazione degli errori.

Nella tabella seguente sono descritti i valori di configurazione del Registro di sistema.
Valore del Registro di sistemaDescrizione
EnableErrorLoggingValore DWORD che può essere impostato su TRUE per abilitare la registrazione degli errori o su FALSE per disabilitarla. Il valore predefinito è TRUE.
ErrorLogFileTruncateSizeValore DWORD che consente di specificare la dimensione massima in byte di un file di registro degli errori. Il valore predefinito è un MB (0x100000).

Nota: il valore specificato non può essere inferiore al valore predefinito.
ErrorLoggingDirValore di stringa che consente di specificare la cartella in cui vengono archiviati i file di registrazione dell'API HTTP.

L'API HTTP crea una sottocartella HTTPERR nella cartella specificata e vi archivia i file di registrazione. A questa sottocartella e ai relativi file di registro vengono assegnate le stesse impostazioni di autorizzazione. L'account di amministratore e l'account di sistema locale dispongono di accesso completo. Agli altri utenti non è consentito l'accesso.

Quando non viene specificata alcuna cartella nel Registro di sistema, la cartella predefinita è la seguente:
%SystemRoot%\System32\LogFiles

Nota il valore di stringa ErrorLoggingDir deve essere un percorso locale completo. Tuttavia, può contenere la variabile %SystemRoot%. Impossibile utilizzare un'unità di rete o una condivisione di rete.

torna all'inizio

Formattazione dei registri errori dell'API HTTP

In genere, il formato dei file di registro degli errori delle API HTTP è uguale a quello dei registri errori W3C, con la differenza che i file di registro degli errori delle API HTTP non includono i nomi di colonna. Per ogni riga di un registro errori dell'API HTTP è registrato un errore. I campi sono visualizzati secondo un ordine specifico, separati l'uno dall'altro da un unico carattere di spazio (0x0020). In ciascun campo, i segni più (0x002B) sostituiscono spazi, tabulazioni e caratteri di controllo non stampabili.

Nella tabella seguente sono indicati i vari campi e l'ordine in cui essi sono visualizzati in un record di registro errori.
CampoDescrizione
DataÈ conforme al formato W3C, basato su UTC (Coordinated Universal Time) e costituito sempre da dieci caratteri nel formato AAAA-MM-GG. Ad esempio, la data 1 maggio 2003 è espressa nella forma 2003-05-01.
OraÈ conforme al formato W3C, basato su UTC e costituito sempre da otto caratteri nel formato HH:MM:SS. Ad esempio, le 17.30 (UTC) sono espresse nella forma 17:30:00.
Indirizzo IP del clientIndirizzo IP del client in cui si verifica l'errore. Può essere un indirizzo IPv4 o IPv6. Se l'indirizzo IP del client è un indirizzo IPv6, nell'indirizzo sarà incluso anche il campo relativo all'ID di ambito.
Porta del clientNumero di porta del client in cui si verifica l'errore.
Indirizzo IP del serverIndirizzo IP del server in cui si verifica l'errore. Può essere un indirizzo IPv4 o IPv6. Se l'indirizzo IP del server è un indirizzo IPv6, nell'indirizzo sarà incluso anche il campo relativo all'ID di ambito.
Porta del serverNumero di porta del server in cui si verifica l'errore.
Versione del protocolloVersione del protocollo in uso.

Se l'analisi della connessione non è stata sufficiente a individuare la versione del protocollo, come segnaposto per il campo vuoto viene utilizzato un trattino (0x002D).

Se il numero di versione principale o il numero di versione secondaria analizzato è maggiore o uguale a 10, la versione viene registrata nella forma HTTP/?.?.
VerboConsente di dichiarare passata l'ultima richiesta analizzata. Sono inclusi i verbi sconosciuti, ma tutti i verbi di dimensione maggiore ai 255 byte vengono troncati a questa dimensione. Se non è disponibile alcun verbo, come segnaposto per il campo vuoto viene utilizzato un trattino (0x002D).
URL cooked + queryURL e ogni query a tale URL associata, registrati come unico campo separato da un punto interrogativo (0x3F). Il campo viene troncato alla dimensione massima di 4096 byte.

Se l'URL è stato analizzato (URL cooked), viene registrato con la conversione della tabella codici locale e gestito come campo Unicode.

Se l'URL non è stato analizzato al momento della registrazione (URL non cooked), viene copiato nella forma in cui si trova, senza conversione Unicode.

Se l'URL non può essere analizzato dall'API HTTP, come segnaposto per il campo vuoto viene utilizzato un trattino (0x002D).
Stato del protocolloLo stato del protocollo non può essere un numero maggiore di 999.

Se lo stato del protocollo della risposta a una richiesta è disponibile, viene registrato in questo campo.

Se lo stato del protocollo non è disponibile, come segnaposto per il campo vuoto viene utilizzato un trattino (0x002D).
ID del sitoNon utilizzato in questa versione dell'API HTTP. In questo campo viene sempre utilizzato un trattino (0x002D) come segnaposto.
Enunciazione di erroreNel campo è contenuta una stringa che identifica il tipo di errore registrato. Questo campo non può essere mai vuoto.
Nome codaSi tratta del nome coda richiesto.
Le seguenti sono alcune righe di esempio di registro errori di un'API HTTP:
2002-07-05 18:45:09 172.31.77.6 2094 172.31.77.6 80 HTTP/1.1 GET /qos/1kbfile.txt 503 – ConnLimit 2002-07-05 19:51:59 127.0.0.1 2780 127.0.0.1 80 HTTP/1.1 GET /ThisIsMyUrl.htm 400 – Hostname 2002-07-05 19:53:00 127.0.0.1 2894 127.0.0.1 80 HTTP/2.0 GET / 505 - Version_N/S 2002-07-05 20:06:01 172.31.77.6 64388 127.0.0.1 80 - - - - - Timer_MinBytesPerSecond
Torna all'inizio

Tipi di errore registrati dall'API HTTP

Mediante la registrazione degli errori dell'API HTTP vengono registrati eventi, quali risposte di errore ai client, timeout della connessione, richieste orfane e connessioni interrotte, gestiti in modo non corretto.

Nell'elenco seguente sono illustrati i tipi di errori registrati dall'API HTTP:
  • Risposte ai client L'API HTTP invia una risposta di errore a un client, ad esempio un errore 400 provocato da un errore di analisi dell'ultima richiesta ricevuta. Quindi, la connessione viene terminata.
  • Timeout della connessione L'API HTTP ha determinato il timeout di una connessione. Se una richiesta è in sospeso al verificarsi del timeout della connessione, tale richiesta viene utilizzata per includere ulteriori informazioni sulla connessione all'interno del registro errori.
  • Richieste orfane Un processo in modalità utente viene terminato in modo imprevisto mentre nella coda di instradamento al processo sono ancora presenti delle richieste. Le richieste orfane vengono registrate in un registro errori dell'API HTTP.
I tipi di errori specifici sono descritti nelle stringhe di enunciazione di errore visualizzate sempre come campo finale di ogni riga di errore. Nella tabella seguente sono illustrate le varie enunciazioni di errore dell'API HTTP.
Enunciazione di erroreDescrizione

AppOfflineSi è verificato un errore di servizio non disponibile (errore HTTP 503). Il servizio non è disponibile perché, a causa di errori, l'applicazione è stata posta in modalità non in linea.
AppPoolTimerSi è verificato un errore di servizio non disponibile (errore HTTP 503). Il servizio non è disponibile perché il processo del pool di applicazioni è occupato e non è in grado di gestire la richiesta.
AppShutdownSi è verificato un errore di servizio non disponibile (errore HTTP 503). Il servizio non è disponibile perché l'applicazione è stata arrestata automaticamente in conseguenza a criteri dell'amministratore.
BadRequestSi è verificato un errore di analisi durante l'elaborazione di una richiesta.
Client_ResetLa connessione tra client e server è stata chiusa prima che la richiesta potesse essere assegnata a un processo di lavoro. La causa più comune di tale comportamento è la prematura chiusura della connessione al server operata dal client.
Connection_Abandoned_By_AppPoolUn processo di lavoro del pool di applicazioni è terminato in modo imprevisto o ha lasciato orfana una richiesta in sospeso mediante la chiusura del relativo handle.
Connection_Abandoned_By_ReqQueueUn processo di lavoro del pool di applicazioni è terminato in modo imprevisto o ha lasciato orfana una richiesta in sospeso mediante la chiusura del relativo handle. Specifico per Windows Vista e Windows Server 2008.
Connection_DroppedLa connessione tra client e server è stata chiusa prima che il server potesse inviare il pacchetto di risposta finale. La causa più comune di tale comportamento è la prematura chiusura della connessione al server operata dal client.
Connection_Dropped_List_FullL'elenco delle connessioni interrotte tra client e server è completo. Specifico per Windows Vista e Windows Server 2008.
ConnLimitSi è verificato un errore di servizio non disponibile (errore HTTP 503). Il servizio non è disponibile perché è stato raggiunto o superato il limite di connessioni a livello di sito.
Connections_RefusedLa memoria NonPagedPool del kernel è inferiore a 20 MB e http.sys non riceve più nuove connessioni
DisabledSi è verificato un errore di servizio non disponibile (errore HTTP 503). Il servizio non è disponibile perché un amministratore ha posto l'applicazione in modalità non in linea.
EntityTooLargeUn'entità ha superato la dimensione massima consentita.
FieldLengthÈ stato superato il limite di lunghezza di un campo.
ForbiddenDurante l'analisi è stato rilevato un elemento o una sequenza non consentiti.
HeaderSi è verificato un errore di analisi di un'intestazione.
HostnameSi è verificato un errore di analisi durante l'elaborazione di un nome host.
InternalSi è verificato un errore interno del server (errore HTTP 500).
Invalid_CR/LFÈ stato rilevato un ritorno a capo o un avanzamento riga non valido.
LengthRequiredUn valore di lunghezza obbligatorio è mancante.
N/ASi è verificato un errore di servizio non disponibile (errore HTTP 503). Il servizio non è disponibile a causa di un errore interno (ad esempio, errore di allocazione della memoria).
N/ISi è verificato un errore non implementato (errore HTTP 501) o un errore di servizio non disponibile (errore HTTP 503) a causa di una codifica di trasferimento sconosciuta.
NumberSi è verificato un errore di analisi durante l'elaborazione di un numero.
PreconditionUna precondizione obbligatoria è mancante.
QueueFullSi è verificato un errore di servizio non disponibile (errore HTTP 503). Il servizio non è disponibile perché la coda di richieste dell'applicazione è piena.
RequestLengthÈ stato superato il limite di lunghezza di una richiesta.
Timer_AppPoolLa connessione è scaduta perché l'attesa di una richiesta in coda nel pool di applicazioni per l'estrazione dalla coda e l'elaborazione da parte di un'applicazione server ha superato il limite di timeout specificato in ConnectionTimeout (per impostazione predefinita, due minuti).
Timer_ConnectionIdleLa connessione è scaduta e rimane inattiva. Il valore predefinito di ConnectionTimeout è di due minuti.
Timer_EntityBodyLa connessione è scaduta prima che arrivasse il corpo dell'entità della richiesta. Quando è noto che una richiesta dispone di un corpo di entità, l'API HTTP attiva il timer Timer_EntityBody. Inizialmente, il limite di tale timer è impostato sul valore di ConnectionTimeout (in genere 2 minuti). Ogni volta che su questa richiesta viene ricevuta un'altra indicazione di dati, l'API HTTP reimposta il timer e assegna alla connessione altri due minuti (o il valore specificato in ConnectionTimeout).
Timer_HeaderWaitLa connessione è scaduta perché l'analisi dell'intestazione di una richiesta richiedeva più tempo rispetto al limite predefinito di due minuti.
Timer_MinBytesPerSecondLa connessione è scaduta perché il client non ha ricevuto una risposta a una velocità considerata ragionevole. La velocità di invio della risposta era inferiore a quella predefinita di 240 byte/sec. È possibile controllare tale operazione con la proprietà metabaseMinFileBytesPerSec.
Timer_ReqQueueLa connessione è scaduta perché l'attesa di una richiesta in coda nel pool di applicazioni per l'estrazione dalla coda da parte di un'applicazione server ha superato il limite di timeout specificato in ConnectionTimeout. Per impostazione predefinita, due minuti. Specifico per Windows Vista e Windows Server 2008.
Timer_ResponseRiservato. Attualmente non utilizzato.
Timer_SslRenegotiationLa connessione è scaduta perché la rinegoziazione SSL tra il client e il server impiega più del timeout predefinito di due minuti.
URLSi è verificato un errore di analisi durante l'elaborazione di un URL.
URL_LengthUn URL ha superato la dimensione massima consentita.
VerbSi è verificato un errore di analisi durante l'elaborazione di un verbo.
Version_N/SSi è verificato un errore di versione non supportata (errore HTTP 505).

Torna all'inizio
Riferimenti
Per ulteriori informazioni su come aggiungere ulteriori campi di registrazione per gli errori HTTP di IIS, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
832975 Le proprietà aggiuntive sono ora disponibili per l'accesso al file Httperr#.log in IIS 6.0 e IIS 7.0
fixme fix it fixit
Proprietà

ID articolo: 820729 - Ultima revisione: 11/30/2012 13:56:00 - Revisione: 7.0

  • kbhttphandlers kbhttp kbapi kberrmsg kbinfo kbfixme kbmsifixme KB820729
Feedback