ID članka: 820729
Razširi vse | Zmanjšaj

Na tej strani

Povzetek

V tem članku so opisane možnosti pisanja dnevnika napak programskih vmesnikov HTTP (Hypertext Transfer Protocol).

Nekatere napake, do katerih pride v programu, ki temelji na protokolu HTTP, samodejno obravnava programski vmesnik HTTP, namesto da bi bile posredovane nazaj v program za obravnavo. Do tega pride, ker bi lahko pogostost takšnih napak preplavila dnevnik dogodkov ali rutino za obravnavo programov.

V spodnjih temah so opisani različni vidiki pisanja dnevnika napak programskega vmesnika HTTP:

Dodatne informacije

Konfiguracija pisanja dnevnika napak programskega vmesnika HTTP

Če želite, da namesto vas konfiguriramo pisanje dnevnika napak programskega vmesnika HTTP, nadaljujte z razdelkom »Samodejno odpravljanje težav«. Če želite pisanje dnevnika napak programskega vmesnika HTTP konfigurirati sami, nadaljujte z razdelkom »Težavo bom odpravil sam«.

Samodejno odpravljanje težave



Če želite težavo odpraviti samodejno, kliknite gumb ali povezavo Fix it. V pogovornem oknu Prenos datoteke kliknite Zaženi in sledite navodilom čarovnika za popravilo.

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


Opombe
  • Ta čarovnik je morda na voljo le v angleščini. Vendar samodejno odpravljanje težav deluje tudi v drugih jezikovnih različicah sistema Windows.
  • Če ne uporabljate računalnika, v katerem je prišlo do težave, shranite rešitev za odpravljanje težave na pomnilniški ključek ali CD in jo zaženite v računalniku, v katerem je prišlo do težave.



Težavo bom odpravil sam

Pisanje dnevnika napak programskega vmesnika HTTP nadzorujejo tri vrednosti registra v ključu HTTP \Parameters. Te ključe najdemo v tem registrskem ključu:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
Opomba Mesto in oblika konfiguracijskih vrednosti se lahko v novejših različicah operacijskega sistema Microsoft Windows spremenita.

Če želite spreminjati vrednosti registra in si ogledati ali spremeniti dnevniške datoteke ter mape, ki jih vsebujejo, potrebujete skrbniške poverilnice/poverilnice lokalnega sistema.

Informacije o konfiguraciji v vrednostih registra se preberejo, ko se zažene gonilnik programskega vmesnika HTTP. Če spremenite nastavitve in želite prebrati nove vrednosti, morate zato gonilnik zaustaviti in nato znova zagnati. To naredite tako, da v konzolo vnesete ta dva ukaza::
net stop http
net start http
Za poimenovanje dnevniških datotek se uporablja to pravilo poimenovanja:
httperr + številka zaporedja + .log
Primer: httperr4.log
Ko dnevniške datoteke dosežejo največjo dovoljeno velikost, ki jo določa vrednost registra ErrorLogFileTruncateSize, začnejo krožiti. Ta vrednost ne sme biti manjša od enega megabajta (MB).

Če konfiguracija pisanja dnevnika napak ni veljavna ali če v času, ko programski vmesnik HTTP piše v dnevniške datoteke, pride do kakršne koli vrste napake, programski vmesnik HTTP prek zapisovanja dogodkov v dnevnik skrbnike obvesti, da se pisanje dnevnika napak ne izvaja.

V spodnji tabeli so opisane konfiguracijske vrednosti registra.
Zmanjšaj tabeloRazširi tabelo
Vrednost registraOpis
EnableErrorLoggingVnos DWORD ki ga lahko nastavite na »TRUE«, če želite omogočiti pisanje dnevnika napak, ali na »FALSE«, če ga želite onemogočiti. Privzeta vrednost je TRUE.
ErrorLogFileTruncateSizeVnos DWORD, ki določa največjo dovoljeno velikost datoteke dnevnika napak v bajtih. Privzeta vrednost je en MB (0x100000).

Opomba Določena vrednost ne sme biti manjša od privzete vrednosti.
ErrorLoggingDirVnos String, ki določa mapo, v katero programski vmesnik HTTP shranjuje dnevniške datoteke.

Programski vmesnik HTTP v navedeni mapi ustvari podmapo HTTPERR in nato dnevniške datoteke shranjuje v to podmapo. Za to podmapo in dnevniške datoteke veljajo iste nastavitve dovoljenj. Skrbniški računi in računi lokalnega sistema imajo poln dostop. Drugi uporabniki nimajo dostopa.

Če mapa v registru ni določena, je privzeta mapa ta:
%SystemRoot%\System32\LogFiles

Opomba Vrednost niza ErrorLoggingDir mora biti popolnoma določena lokalna pot. Vseeno pa lahko vsebuje %SystemRoot%. Omrežnega pogona ali sredstva ne morete uporabiti.

Oblika zapisa dnevnikov napak programskega vmesnika HTTP

Na splošno imajo datoteke dnevnikov napak programskega vmesnika HTTP enako obliko zapisa kot dnevniki napak W3C, le da datoteke dnevnika napak programskega vmesnika HTTP ne vsebujejo naslovov stolpcev. V posamezni vrstici dnevnika napak programskega vmesnika HTTP je zapisana ena napaka. Polja so prikazana v posebnem vrstnem redu. Vsako polje je od prejšnjega ločeno z znakom enojnega presledka (0x0020). V vsakem polju znak plus (0x002B) zamenja znake presledkov, tabulatorje in krmilne znake, ki jih ni mogoče natisniti.

V spodnji tabeli so določena polja in vrstni red polj v zapisu dnevnika napak.
Zmanjšaj tabeloRazširi tabelo
PoljeOpis
Date (Datum)Polje »Date« (Datum) sledi obliki zapisa W3C. To polje temelji na usklajenem univerzalnem času (UTC). Polje »Date« (Datum) vedno vsebuje deset znakov v obliki LLLL-MM-DD. 1. maj 2003 je na primer zapisan kot 2003-05-01.
Time (Čas)Polje »Time« (Čas) sledi obliki zapisa W3C. To polje temelji na usklajenem univerzalnem času (UTC). Polje »Time« (Čas) vedno vsebuje osem znakov v obliki MM:HH:SS. Čas 17:30 (UTC) je na primer zapisan kot 17:30:00.
Client IP Address (Naslov IP odjemalca)Naslov IP zadevnega odjemalca. Vrednost v tem polju je lahko naslov IPv4 ali naslov IPv6. Če je naslov IP odjemalca naslov IPv6, je v naslov vključeno tudi polje »ScopeId«.
Client Port (Vrata odjemalca)Številka vrat zadevnega odjemalca.
Server IP Address (Naslov IP strežnika)Naslov IP zadevnega strežnika. Vrednost v tem polju je lahko naslov IPv4 ali naslov IPv6. Če je naslov IP strežnika naslov IPv6, je v naslov vključeno tudi polje »ScopeId«.
Server Port (Vrata strežnika)Številka vrat zadevnega strežnika.
Protocol Version (Različica protokola)Različica protokola, ki se uporablja.

Če povezava ni bila razčlenjena do te mere, da bi bilo mogoče določiti različico protokola, se kot označba mesta za prazno polje uporabi vezaj (0x002D).

Če je razčlenjena številka glavne različice ali podrazličice večja ali enaka 10, se različica zabeleži kot »HTTP/?.?«.
Verb (Dejanje)Stanje dejanja, ki ga poda zadnja razčlenjena zahteva. Vključena so tudi neznana dejanja, vendar so dejanja, ki so daljša od 255 bajtov, prirezana na to dolžino. Če dejanje ni na voljo, se kot označba mesta za prazno polje uporabi vezaj (0x002D).
CookedURL + Query (CookedURL + Poizvedba)URL in poizvedba, ki je z njim povezana, sta zabeležena kot eno polje, ki je ločeno z vprašajem (0x3F). Polje je prirezano pri njegovi omejitvi dolžine, ki je 4096 bajtov.

Če je URL razčlenjen, je zabeležen s pretvorbo lokalne kodne strani in se obravnava kot polje Unicode.

Če URL v času pisanja dnevnika ni razčlenjen, se kopira nespremenjen brez pretvorbe Unicode.

Če programski vmesnik HTTP ne more razčleniti tega URL-ja, se kot označba mesta za prazno polje uporabi vezaj (0x002D).
Protocol Status (Stanje protokola)Stanje protokola ne more biti večje od 999.

Če je stanje protokola za odgovor na zahtevo na voljo, se zabeleži v to polje.

Če stanje protokola ni na voljo, se kot označba mesta za prazno polje uporabi vezaj (0x002D).
SiteId (ID mesta)Se ne uporablja v tej različici programskega vmesnika HTTP. V tem polju je kot označba mesta vedno prikazan vezaj (0x002D).
Reason Phrase (Besedna zveza vzroka)To polje vsebuje niz, ki določa vrsto napake, ki se beleži. To polje ni nikoli prazno.
Queue Name (Ime čakalne vrste)To je ime čakalne vrste zahtev.
Spodnje vzorčne vrstice so iz dnevnika napak programskega vmesnika 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

Vrste napak, ki jih programski vmesnik HTTP zapisuje v dnevnik

Programski vmesnik HTTP beleži odgovore odjemalcem o napakah, potekle časovne omejitve povezav, zapuščene zahteve in prekinjene povezave, ki niso pravilno obravnavane.

Na spodnjem seznamu so navedene vrste napak, ki jih programski vmesnik HTTP zapisuje v dnevnik:
  • Odgovori odjemalcem Programski vmesnik HTTP odjemalcu pošlje odgovor o napaki, na primer napako 400, ki jo povzroči napaka pri razčlenjevanju v zadnji prejeti zahtevi. Ko programski vmesnik HTTP pošlje odgovor o napaki, prekine povezavo.
  • Potekle časovne omejitve povezav Programski vmesnik HTTP povzroči, da poteče časovna omejitev povezave. Če je zahteva ob poteku časovne omejitve povezave v čakanju, se uporabi za posredovanje več informacij o povezavi v dnevniku napak.
  • Zapuščene zahteve Medtem ko se zahteve v čakalni vrsti še vedno preusmerjajo v proces uporabniškega načina, se proces nepričakovano konča. Programski vmesnik HTTP zapuščene zahteve zabeleži v dnevnik napak.
Posamezne vrste napak so označene z nizom Reason Phrase (Besedna zveza vzroka), ki je vedno prikazan kot zadnje polje vsake vrstice napake. V spodnji tabeli so navedene besedne zveze vzroka programskega vmesnika HTTP.
Zmanjšaj tabeloRazširi tabelo
Besedna zveza vzrokaOpis

AppOfflinePrišlo je do napake nedosegljive storitve (napaka HTTP 503). Storitev ni na voljo, ker so napake programa povzročile, da je program brez povezave.
AppPoolTimerPrišlo je do napake nedosegljive storitve (napaka HTTP 503). Storitev ni na voljo, ker je proces skupine programov prezaseden in ne more obravnavati zahteve.
AppShutdownPrišlo je do napake nedosegljive storitve (napaka HTTP 503). Storitev ni na voljo, ker se je program odzval na pravilnik skrbnika in se je samodejno zaustavil.
BadRequestMed obdelavo zahteve je prišlo do napake pri razčlenjevanju.
Client_ResetPovezava med odjemalcem in strežnikom je bila prekinjena, preden je bilo mogoče zahtevo dodeliti delovnemu procesu. Najpogostejši vzrok za to vedenje je, da odjemalec prezgodaj prekine povezavo s strežnikom.
Connection_Abandoned_By_AppPoolDelovni proces iz skupine programov se je nepričakovano končal ali pa čakajočo zahtevo spremenil v zapuščeno, tako da je zaprl njeno kodo za dostop.
Connection_Abandoned_By_ReqQueueDelovni proces iz skupine programov se je nepričakovano končal ali pa čakajočo zahtevo spremenil v zapuščeno, tako da je zaprl njeno kodo za dostop. Značilno za operacijska sistema Windows Vista in Windows Server 2008.
Connection_DroppedPovezava med odjemalcem in strežnikom je bila prekinjena, preden je lahko strežnik poslal svoj končni paket odgovora. Najpogostejši vzrok za to vedenje je, da odjemalec prezgodaj prekine povezavo s strežnikom.
Connection_Dropped_List_FullSeznam prekinjenih povezav med odjemalci in strežnikom je poln. Značilno za operacijska sistema Windows Vista in Windows Server 2008.
ConnLimitPrišlo je do napake nedosegljive storitve (napaka HTTP 503). Storitev ni na voljo, ker je omejitev števila povezav na ravni mesta dosežena ali presežena.
Connections_RefusedRaven pomnilnika jedra NonPagedPool je padla pod 20 MB in proces »http.sys« je prenehal sprejemati nove povezave.
DisabledPrišlo je do napake nedosegljive storitve (napaka HTTP 503). Storitev ni na voljo, ker je skrbnik prekinil povezavo za program.
EntityTooLargeEntiteta presega največjo dovoljeno velikost.
FieldLengthOmejitev dolžine polja je bila presežena.
ForbiddenProces je med razčlenjevanjem naletel na prepovedan element ali zaporedje.
HeaderV glavi je prišlo do napake pri razčlenjevanju.
HostnameMed obdelavo imena gostitelja je prišlo do napake pri razčlenjevanju.
InternalPrišlo je do notranje napake strežnika (napaka HTTP 500).
Invalid_CR/LFPrišlo je do neveljavnega prehoda v novo vrstico ali nove vrstice.
LengthRequiredZahtevana vrednost dolžine je manjkala.
N/APrišlo je do napake nedosegljive storitve (napaka HTTP 503). Storitev ni na voljo, ker je prišlo do notranje napake (na primer napake pri dodeljevanju pomnilnika).
N/IPrišlo je do napake neuveljavitve (napaka HTTP 501) ali pa je zaradi neznanega kodiranja prenosa prišlo do napake nedosegljive storitve (napaka HTTP 503).
NumberMed obdelavo številke je prišlo do napake pri razčlenjevanju.
PreconditionZahtevani predpogoj je manjkal.
QueueFullPrišlo je do napake nedosegljive storitve (napaka HTTP 503). Storitev ni na voljo, ker je čakalna vrsta zahtev programa polna.
RequestLengthOmejitev dolžine zahteve je bila presežena.
Timer_AppPoolPovezava je potekla, ker je zahteva v čakalni vrsti skupine programov predolgo čakala, da jo strežniški program vzame iz vrste in jo obdela. To trajanje časovne omejitve ima vrednost ConnectionTimeout. Ta vrednost je privzeto nastavljena na dve minuti.
Timer_ConnectionIdlePovezava je potekla in ostaja nedejavna. Privzeto trajanje vrednosti ConnectionTimeout je dve minuti.
Timer_EntityBodyPovezava je potekla, preden je prispelo telo entitete zahteve. Če je jasno, da ima zahteva telo entitete, programski vmesnik HTTP vklopi časovnik Timer_EntityBody. Na začetku je omejitev tega časovnika nastavljena na vrednost ConnectionTimeout (običajno 2 minuti). Vsakič, ko je za to zahtevo prejeto dodatno opozorilo o podatkih, programski vmesnik HTTP ponastavi časovnik in podaljša povezavo še za dve minuti (oziroma toliko časa, kot je določeno v vrednosti ConnectionTimeout).
Timer_HeaderWaitPovezava je potekla, ker je razčlenjevanje glave zahteve trajalo več kot dve minuti, kar je privzeta omejitev.
Timer_MinBytesPerSecondPovezava je potekla, ker odjemalec ni prejemal odgovora pri razumni hitrosti. Hitrost pošiljanja odgovora je bila nižja od privzete hitrosti 240 bajtov/sekundo. To lahko nadzorujete z lastnostjo zbirke metapodatkov MinFileBytesPerSec.
Timer_ReqQueuePovezava je potekla, ker je zahteva v čakalni vrsti skupine programov predolgo čakala, da jo strežniški program vzame iz vrste. To trajanje časovne omejitve ima vrednost ConnectionTimeout. Ta vrednost je privzeto nastavljena na dve minuti. Značilno za operacijska sistema Windows Vista in Windows Server 2008.
Timer_ResponseRezervirano. Trenutno se ne uporablja.
Timer_SslRenegotiation Povezava je potekla, ker je vnovično pogajanje SSL med odjemalcem in strežnikom trajalo več kot dve minuti, kar je privzeta omejitev.
URLMed obdelavo URL-ja je prišlo do napake pri razčlenjevanju.
URL_LengthURL presega največjo dovoljeno velikost.
VerbMed obdelavo dejanja je prišlo do napake pri razčlenjevanju.
Version_N/SPrišlo je do napake nepodprte različice (napaka HTTP 505).

Sklici

Če želite več informacij o dodajanju dodatnih polj v dnevnik za beleženje napak HTTP v storitvah IIS, kliknite to številko članka iz Microsoftove zbirke znanja:
832975 V storitvah IIS 6.0 in IIS 7.0 so zdaj na voljo dodatne lastnosti za pisanje dnevnika v datoteko »Httperr#.log« (Besedilo je morda v angleščini)
Opomba To je članek za »HITRO OBJAVO«, ki je ustvarjen neposredno v Microsoftovi organizaciji za podporo. Informacije v tem članku so na voljo »takšne kot so« in kot odziv na težave. Zaradi hitrosti pri objavljanju članka so v gradivu lahko tipografske napake, ki se jih lahko popravi kadar koli brez obvestila. Za dodatne informacije glejte Pogoje uporabe.

Lastnosti

ID članka: 820729 - Zadnji pregled: 30. november 2012 - Revizija: 2.0
Ključne besede: 
kbhttphandlers kbhttp kbapi kberrmsg kbinfo kbfixme kbmsifixme KB820729

Pošlji povratne informacije

 

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