ID articol: 820729
Măriți totul | Reduceți totul

În această pagină

Rezumat

Acest articol descrie capacitatea de scriere în jurnal a erorilor API Hypertext Transfer Protocol (HTTP).

Unele erori care apar într-o aplicație bazată pe HTTP sunt gestionate automat de API HTTP în loc să fie retrimise unei aplicații pentru a fi gestionate. Acest comportament apare din cauză că frecvența acestor erori ar putea altfel inunda un jurnal de evenimente sau rutina de tratare a unei aplicații.

Subiectele următoare descriu diversele aspecte ale scrierii în jurnal a erorilor API HTTP:

Informații suplimentare

Configurați scrierea în jurnal a erorilor API HTTP

Dacă doriți să configurăm noi scrierea în jurnal a erorilor API HTTP, mergeți la secțiunea „Remediere automată”. Dacă preferați să configurați dvs. scrierea în jurnal a erorilor API HTTP, continuați cu secțiunea „Remediere personală”.

Remediere automată



Pentru o remediere automată a acestei probleme, face?i clic pe linkul sau butonul Fix it. În caseta de dialog Descărcare fi?ier, face?i clic pe Executare, apoi urma?i pa?ii din expertul Fix it.

Disable HTTP API error logging
Microsoft Fix it 50635
Enable HTTP API error logging
Microsoft Fix it 50634


Note
  • Este posibil ca acest expert să fie disponibil numai în limba engleză. Însă, remedierea automată funcționează și pentru Windows în alte limbi.
  • Dacă nu vă afla?i la computerul care manifestă problema, salva?i solu?ia Fix it pe o unitate flash sau pe un CD, apoi executa?i-o pe computerul care manifestă problema.



Remediere personală

Trei valori de registry de la cheia HTTP \Parameters controlează scrierea în jurnal a erorilor API HTTP. Aceste chei se află la următoarea cheie de registry:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
Notă Locația și forma valorilor de configurare pot fi diferite în versiunile ulterioare ale sistemului de operare Microsoft Windows.

Trebuie să dețineți acreditările de Administrator/Sistem local pentru a modifica valorile de registry și pentru a vizualiza sau modifica fișierele jurnal și folderul care le conține.

Informațiile de configurare din valorile de registry sunt citite atunci când pornește driverul API HTTP. Prin urmare, dacă modificați setările, trebuie să opriți și apoi să reporniți driverul pentru a citi valorile noi. Pentru aceasta, tastați următoarele comenzi la consolă:
net stop http
net start http
Pentru denumirea fișierelor jurnal se utilizează următoarea convenție de denumire:
httperr + număr secvență + .log
Exemplu: httperr4.log
Fișierele jurnal sunt comutate când ajung la dimensiunea maximă specificată în valoarea de registry ErrorLogFileTruncateSize. Această valoare nu poate fi mai mică de megaoctet (MO).

În cazul în care configurarea scrierii în jurnal a erorilor nu este validă sau dacă apare o eroare, de orice fel, în timp ce API HTTP scrie în fișierele jurnal, API HTTP utilizează scrierea în jurnal a evenimentelor pentru a notifica administratorii de faptul că nu are loc scrierea în jurnal a erorilor.

Următorul tabel descrie valorile de configurare din registry.
Reduceți tabelulMăriți tabelul
Valori de registryDescriere
EnableErrorLoggingO valoare DWORD care se poate seta la TRUE pentru a activa scrierea erorilor sau la FALSE pentru a o dezactiva. Valoarea implicită este TRUE.
ErrorLogFileTruncateSizeO valoare DWORD care specifică dimensiunea maximă a fișierului jurnal de erori, în octeți. Valoarea implicită este un MO (0x100000).

Notă Valoarea specificată nu poate fi mai mică decât valoarea implicită.
ErrorLoggingDirUn Șir care specifică folderul în care API HTTP pune fișierele de scriere în jurnal.

API HTTP creează un subfolder HTTPERR în folderul specificat, apoi stochează fișierele jurnal în subfolder. Acest subfolder și fișierele jurnal primesc aceleași setări de permisiuni. Conturile Administrator ?i Sistem local au acces deplin. Alți utilizatori nu au acces.

Aceasta este folderul implicit atunci când folderul nu este specificat în registry:
%SystemRoot%\System32\LogFiles

Notă Valoarea șirului ErrorLoggingDir trebuie să fie o cale locală complet autorizată. Cu toate acestea, poate să conțină %SystemRoot%. Nu se pot utiliza o unitate de rețea sau partajarea în rețea.

Formatul jurnalelor de eroare API HTTP

În general, fișierele jurnalului de eroare API HTTP au același format ca jurnalele de eroare W3C, cu excepția faptului că fișierele jurnalelor de eroare API HTTP nu conțin antetele coloanelor. Fiecare linie a unui jurnal de eroare API HTTP înregistrează o eroare. Câmpurile apar într-o anumită ordine. Un caracter de tip spațiu unic (0x0020) separă fiecare câmp din câmpul anterior. În fiecare câmp, semnele plus (0x002B) înlocuiesc caracterele spațiu, tabulatorii și caracterele de control neimprimabile.

Tabelul de mai jos identifică toate câmpurile și ordinea câmpurilor într-o înregistrare dintr-un jurnal de eroare.
Reduceți tabelulMăriți tabelul
CâmpDescriere
DatăCâmpul Dată respectă formatul W3C. Acest câmp este bazat pe ora universală (UTC). Câmpul Dată are întotdeauna zece caractere sub forma AAAA-LL-ZZ. De exemplu, 1 mai 2003 este exprimat ca 2003-05-01.
OrăCâmpul Oră respectă formatul W3C. Acest câmp este bazat pe UTC. Câmpul orei are întotdeauna opt caractere, sub forma MM:HH:SS. De exemplu, ora 5:30 PM (UTC) este exprimată ca 17:30:00.
Adresă IP clientAdresa IP a clientului în cauză. Valoarea din acest câmp poate fi fie o adresă IPv4 sau o adresă IPv6. Dacă adresa IP a clientului este o adresă IPv6, câmpul ScopeId este, de asemenea, inclus în adresă.
Port clientNumărul de port pentru clientul în cauză.
Adresa IP serverAdresa IP a serverului în cauză. Valoarea din acest câmp poate fi fie o adresă IPv4 sau o adresă IPv6. Dacă adresa IP a serverului este o adresă IPv6, câmpul ScopeId este, de asemenea, inclus în adresă.
Port serverNumărul de port al serverului în cauză.
Versiune protocolVersiune de protocol care se utilizează.

În cazul în care conexiunea nu a fost analizată suficient pentru a stabili versiunea de protocol, se utilizează o cratimă (0x002D) ca substituent pentru câmpul necompletat.

Dacă numărul mai mare sau mai mic al versiunii care este analizat este mai mare sau egal cu 10, versiunea este scrisă în jurnal ca HTTP/?.?.
TextTextul vă informează că ultima solicitare a fost analizată cu succes. Sunt incluse și texte necunoscute, dar orice text care depășește 255 de octe?i este trunchiat la această lungime. Dacă textul nu este disponibil, se utilizează o cratimă (0x002D) ca substituent pentru câmpul necompletat.
CookedURL + interogareAdresa URL și orice interogare asociată cu aceasta sunt scrise în jurnal ca un singur câmp separat de un semn de întrebare (0x3F). Acest câmp este trunchiat la limita de 4.096 de octeți.

Dacă această adresă URL a fost analizată („preparată”), aceasta este scrisă în jurnal cu conversia paginii de cod locale și este tratată ca un câmp Unicode.

Dacă această adresă URL nu a fost analizată („preparată”) în momentul scrierii în jurnal, aceasta este copiată exact, fără conversia Unicode.

Dacă API HTTP nu poate analiza această adresă URL, se utilizează o cratimă (0x002D) ca substituent pentru câmpul necompletat.
Stare protocolStarea protocolului nu poate fi mai mare de 999.

Dacă starea protocolului răspunsului la o solicitare este disponibilă, acesta este scrisă în jurnal în acest câmp.

Dacă starea protocolului nu este disponibil, se utilizează o cratimă (0x002D) ca substituent pentru câmpul necompletat.
SiteIdNu se utilizează în această versiune de API HTTP. în acest câmp apare întotdeauna o cratimă cu rol de substituent (0x002D).
Expresie motivAcest câmp conține un șir care identifică tipul de eroare înregistrat în jurnal. Acest câmp nu este lăsat niciodată necompletat.
Nume coadăAcest nume de coada pentru solicitare.
Următoarele linii ca exemplificare sunt dintr-un jurnal de erori 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

Tipurile de erori pe care le scrie în jurnal API HTTP

API HTTP API înregistrează răspunsurile de eroare către clienți, expirările conexiunilor, solicitările solitare și conexiunile întrerupte gestionate incorect.

Lista de mai jos identifică tipurile de erori pe care API HTTP le scrie în jurnal:
  • Răspunsuri către clienți API HTTP trimite un răspuns de eroare către un client, de exemplu, o eroare 400 provocată de o eroare de analiză în ultima solicitare primită. După ce API HTTP trimite răspunsul de eroare, interfața încheie conexiunea.
  • Expirări ale conexiunilor API HTTP API produce expirarea unei conexiuni. Dacă există o solicitare în așteptare atunci când conexiunea expiră, solicitarea este utilizată pentru a furniza mai multe informații despre conexiune în jurnalul de erori.
  • Solicitări solitare Un proces al modului de utilizator se închide în mod neașteptat când încă mai există solicitări în coadă care sunt direcționate către procesul respectiv. API HTTP scrie solicitările solitare în jurnalul de erori.
Tipurile de erori specifice sunt atribuite de șirul Expresie motiv care apare întotdeauna ca ultimul câmp al fiecărei linii de eroare. Tabelul următor identifică expresiile cu motivele API HTTP.
Reduceți tabelulMăriți tabelul
Expresie motivDescriere

AppOfflineA apărut o eroare de serviciu indisponibil (eroare HTTP 503). Serviciul nu este disponibil deoarece erorile de aplicație au făcut ca aplicația să treacă în modul neconectat.
AppPoolTimerA apărut o eroare de serviciu indisponibil (eroare HTTP 503). Serviciul nu este disponibil deoarece procesul rezervorului de aplicații este prea ocupat pentru a gestiona solicitarea.
AppShutdownA apărut o eroare de serviciu indisponibil (eroare HTTP 503). Serviciul nu este disponibil deoarece aplica?ia se închide automat ca răspuns la politica de administrator.
BadRequestO eroare de analiză a apărut la procesarea unei solicitări.
Client_ResetConexiunea între client și server s-a închis înainte ca solicitarea să poată fi atribuită unui proces de lucru. Cea mai frecventă cauză a acestui comportament este aceea că clientul închide prematur conexiunea la server.
Connection_Abandoned_By_AppPoolUn proces de lucru din rezervorul de aplicații s-a închis în mod neașteptat sau a lăsat solitară o solicitare în curs de așteptare închizând rutina de tratare.
Connection_Abandoned_By_ReqQueueUn proces de lucru din rezervorul de aplicații s-a închis în mod neașteptat sau a lăsat solitară o solicitare în curs de așteptare închizând rutina de tratare. Specific pentru Windows Vista și Windows Server 2008.
Connection_DroppedConexiunea între client și server s-a închis înainte ca serverul să poată trimite pachetul cu răspunsul final. Cea mai frecventă cauză a acestui comportament este aceea că clientul închide prematur conexiunea la server.
Connection_Dropped_List_FullLista de conexiuni întrerupte între clienții și server este plină. Specific pentru Windows Vista și Windows Server 2008.
ConnLimitA apărut o eroare de serviciu indisponibil (eroare HTTP 503). Serviciul nu este disponibil deoarece limita de conexiuni la nivelul site-ului a fost atinsă sau depășită.
Connections_RefusedMemoria NonPagedPool de nucleu a scăzut sub 20 MO și http.sys s-a oprit primind conexiuni noi
DezactivatA apărut o eroare de serviciu indisponibil (eroare HTTP 503). Serviciul nu este disponibil pentru că un administrator a trecut aplicația în mod neconectat.
EntityTooLargeO entitate a depă?it dimensiunea maximă permisă.
FieldLengthS-a depă?it limita de lungime a unui câmp.
InterzisLa analiză s-a întâlnit un element interzis sau o secvență interzisă.
AntetEroare de analiză în antet.
Nume de gazdăA apărut o eroare de analiză la procesarea unui nume de gazdă.
InternApărut o eroare internă de server (eroare HTTP 500).
Invalid_CR/LFA apărut un caracter incorect de sfârșit de linie sau de linie nouă.
LengthRequiredA lipsit o valoare de lungimea necesară.
N/AA apărut o eroare de serviciu indisponibil (eroare HTTP 503). Serviciul nu este disponibil deoarece a apărut o eroare internă (cum ar fi o eroare la alocarea de memorie).
N/IA apărut o eroare privind lipsa unei implementări (o eroare HTTP 501) sau privind un serviciu indisponibil (eroare HTTP 503) din cauza unei codări necunoscute la transfer.
NumărA apărut o eroare de analiză la procesarea unui număr.
Condiție prealabilăA lipsit o condiție prealabilă necesară.
QueueFullA apărut o eroare de serviciu indisponibil (eroare HTTP 503). Serviciul nu este disponibil deoarece coada cu solicitările de aplicație este plină.
RequestLengthS-a depă?it limita de lungime a unei solicitări.
Timer_AppPoolConexiunea a expirat deoarece o solicitare a așteptat prea mult în coada unui rezervor de aplicații ca o aplicație de server să o scoată din coadă și să o proceseze. Durata acestei expirări este ConnectionTimeout. În mod implicit, această valoare este setată la două minute.
Timer_ConnectionIdleConexiunea a expirat și rămâne inactivă. Durata ConnectionTimeout implicită este de două minute.
Timer_EntityBodyConexiunea a expirat înainte de sosirea corpului entității de solicitare. Când este clar că o solicitare are un corp de entitate, API HTTP activează temporizatorul Timer_EntityBody. Inițial, limita acestui temporizator este setată la valoarea ConnectionTimeout (de obicei, 2 minute). De fiecare dată când la această solicitare se primește o altă indicație a datei, API HTTP resetează temporizatorul pentru a acorda conexiunii încă două minute (sau cât s-a specificat în ConnectionTimeout).
Timer_HeaderWaitConexiunea a expirat deoarece analiza antetului unei solicitări a durat mai mult timp decât limita implicită a celor două minute.
Timer_MinBytesPerSecondConexiunea a expirat deoarece clientul nu a primit un răspuns la o viteză rezonabilă. Frecvența de trimitere a răspunsului a fost mai lentă decât cea implicită de 240 de octeți/sec. Acest lucru poate fi controlat cu proprietatea de metabază MinFileBytesPerSec.
Timer_ReqQueueConexiunea a expirat deoarece o solicitare a așteptat prea mult în coada unui rezervor de aplicații ca o aplicație de server să o scoată din coadă. Durata acestei expirări este ConnectionTimeout. În mod implicit, această valoare este setată la două minute. Specific pentru Windows Vista și Windows Server 2008.
Timer_ResponseRezervat. Nu se utilizează momentan.
Timer_SslRenegotiation Conexiunea a expirat deoarece renegocierea SSL între client și server a durat mai mult decât durata de expirare implicită de două minute.
URLA apărut o eroare de analiză la procesarea unei adrese URL.
URL_LengthO adresă URL a depă?it dimensiunea maximă permisă.
TextA apărut o eroare de analiză la procesarea unui text.
Version_N/SA apărut o eroare privind o versiune neacceptată (eroare HTTP 505).

Referințe

Pentru informații suplimentare despre adăugarea câmpurilor suplimentare de scriere în jurnal pentru scrierea în jurnal a erorilor HTTP IIS, faceți clic pe următorul număr de articol pentru a vedea articolul în Baza de cunoștințe Microsoft:
832975 Proprietățile suplimentare sunt acum disponibile pentru scrierea în jurnal în fișierul Httperr#.log în IIS 6.0 și IIS 7.0 (Poate fi în engleză)

Proprietă?i

ID articol: 820729 - Ultima examinare: 30 noiembrie 2012 - Revizie: 2.0
Cuvinte cheie: 
kbhttphandlers kbhttp kbapi kberrmsg kbinfo kbfixme kbmsifixme KB820729

Trimite?i feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com