Artikel ID: 820729
Alles uitklappen | Alles samenvouwen

Op deze pagina

Samenvatting

In dit artikel worden de foutregistratiemogelijkheden van de HTTP-API's (Hypertext Transfer Protocol) beschreven.

Bepaalde fouten die optreden in een HTTP-toepassing worden automatisch afgehandeld in de HTTP-API in plaats van voor foutafhandeling te worden doorgegeven aan de toepassing zelf. Dit gebeurt om te voorkomen dat een gebeurtenislogboek of de toepassingshandler wordt overspoeld door de hoge frequentie van dit soort fouten.

Onder de volgende kopjes worden de verschillende aspecten van de HTTP-API-foutregistratie beschreven:

Meer informatie

HTTP-API-foutregistratie configureren

Als u HTTP-API-foutregistratie door ons wilt laten configureren, gaat u naar de sectie Het probleem voor mij oplossen. Als u HTTP-API-foutregistratie liever zelf configureert, gaat u naar de sectie Dit probleem zelf oplossen.

Het probleem voor mij oplossen



Als u dit probleem automatisch wilt oplossen, klikt u op de knop of koppeling Dit probleem oplossen. Klik in het dialoogvenster Bestand downloaden op Uitvoeren en volg de stappen in de wizard.

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


Opmerkingen
  • Deze wizard is mogelijk alleen beschikbaar in het Engels. De automatische correctie werkt echter ook voor andere taalversies van Windows.
  • Als u niet op de computer werkt waarop het probleem optreedt, kunt u de Fix it-oplossing opslaan op een flashstation of een cd, zodat u deze software kunt uitvoeren op de computer waarop het probleem optreedt.



Dit probleem zelf oplossen

Een registersleutel HTTP \Parameters bevat drie waarden waarmee HTTP-API-foutregistratie wordt beheerd. Deze registerwaarden bevinden zich onder de volgende registersleutel:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
Opmerking De locatie en de vorm van de configuratiewaarden kunnen veranderen in latere versies van het Microsoft Windows-besturingssysteem.

U moet beschikken over de referenties Domeinbeheerder en Lokale beheerder om de registerwaarden te kunnen wijzigen en de logboekbestanden en de map waarin deze zich bevinden te kunnen weergeven of wijzigen.

De configuratie-informatie in de registerwaarden wordt gelezen wanneer het HTTP API-stuurprogramma wordt gestart. Daarom moet u na het wijzigen van de instellingen het stuurprogramma afsluiten en opnieuw opstarten om de nieuwe waarden te laten inlezen. U doet dit door de volgende console-opdrachten te typen:
net stop http
net start http
Voor de logboekbestanden geldt de volgende naamconventie:
httperr + volgnummer + .log
Voorbeeld: httperr4.log
Logboekbestanden worden vernieuwd wanneer ze de maximumgrootte hebben bereikt die is gespecificeerd in de registerwaarde ErrorLogFileTruncateSize. Deze waarde mag niet kleiner dan 1 megabyte (MB) zijn.

Als de configuratie van de foutregistratie niet geldig is, of als er een willekeurige fout optreedt tijdens het schrijven in de logboekbestanden door de HTTP-API, worden beheerders via gebeurtenisregistratie gewaarschuwd dat er geen foutregistratie plaatsvindt.

In de volgende tabel worden de instellingen van de registerwaarden beschreven.
Deze tabel samenvouwenDeze tabel uitklappen
Registerwaarde:Beschrijving
EnableErrorLoggingEen DWORD die u op TRUE kunt instellen om foutregistratie in te schakelen, of op FALSE om deze uit te schakelen. De standaardwaarde is TRUE.
ErrorLogFileTruncateSizeA DWORD die de maximale grootte van een foutenlogboekbestand aangeeft in bytes. De standaardwaarde is 1 MB (0x100000).

Opmerking De opgegeven waarde mag niet kleiner zijn dan de standaardwaarde.
ErrorLoggingDirA Tekenreeks die de map aangeeft waarin de logboekbestanden door de HTTP-API worden geplaatst.

In de opgeven map wordt een submap gemaakt, HTTPERR, en daarin worden vervolgens de logboekbestanden geplaatst. Deze submap en de logboekbestanden krijgen dezelfde machtigingsinstellingen. De Administrator en de lokale systeemaccounts hebben volledige toegang. Andere gebruikers hebben geen toegang.

Wanneer de map niet in het register is gespecificeerd, wordt de volgende standaardmap gebruikt:
%SystemRoot%\System32\LogFiles

Opmerking De tekenreekswaarde van ErrorLoggingDir moet een volledig lokaal pad zijn. Het mag echter %SystemRoot% bevatten. Een netwerkstation of een netwerkshare kan niet worden gebruikt.

Indeling van de HTTP-API-foutenlogboeken

In het algemeen hebben de HTTP-API-foutenlogboeken dezelfde indeling als W3C-foutenlogboeken, alleen bevatten de HTTP-API-foutenlogboeken geen kolomkoppen. Op elke regel van een HTTP-API-foutenlogboek wordt één fout geregistreerd. De velden verschijnen in een specifieke volgorde. Elk veld wordt van het vorige gescheiden door het teken voor een enkele spatie (0x0020). In elk veld worden spatietekens, tabs en niet-afdrukbare besturingstekens vervangen door plustekens (0x002B).

In de volgende tabel wordt een overzicht gegeven van de velden en de veldvolgorde in een foutenlogboekrecord.
Deze tabel samenvouwenDeze tabel uitklappen
VeldBeschrijving
DateDit datumveld volgt de W3C-notatie. Dit veld is gebaseerd op UTC (Coordinated Universal Time). Het datumveld bevat altijd tien tekens met de notatie JJJJ-MM-DD. 1 mei 2003 wordt bijvoorbeeld uitgedrukt als 2003-05-01.
TimeDit tijdveld volgt de W3C-notatie. Dit veld is gebaseerd op UTC. Het tijdveld bevat altijd acht tekens met de notatie UU:MM:SS. 17:30 uur (UTC) wordt bijvoorbeeld aangegeven als 17:30:00.
Client IP AddressHet IP-adres van de desbetreffende client. De waarde in dit veld kan een IPv4- of een IPv6-adres zijn. Als de waarde een IPv6-adres is, wordt het veld ScopeId ook in het adres opgenomen.
Client PortHet poortnummer voor de desbetreffende client.
Server IP AddressHet IP-adres van de desbetreffende server. De waarde in dit veld kan een IPv4- of een IPv6-adres zijn. Als de waarde een IPv6-adres is, wordt het veld ScopeId ook in het adres opgenomen.
Server PortHet poortnummer van de desbetreffende server.
Protocol VersionDe versie van het protocol dat wordt gebruikt.

Als de verbinding niet voldoende is geparseerd om de protocolversie te bepalen, wordt een koppelteken (0x002D) gebruikt ter vervanging van het lege veld.

Als het geparseerde hoofd- of subversienummer groter is dan 10 of gelijk is aan 10, wordt de versie geregistreerd als HTTP/?.?.
VerbDe werkwoordstatus die wordt doorgegeven door het laatste verzoek dat is geparseerd. Onbekende werkwoorden worden ook opgenomen, maar elk werkwoord van meer dan 255 bytes wordt op deze lengte afgekapt. Als er geen werkwoord beschikbaar is, wordt een koppelteken (0x002D) gebruikt ter vervanging van het lege veld.
CookedURL + QueryDe URL en de daaraan gekoppelde query worden geregistreerd als één veld, gescheiden door een vraagteken (0x3F). Dit veld wordt afgekapt op de maximale lengte van 4096 bytes.

Als de URL is geparseerd ('cooked'), wordt deze omgezet naar de lokale codering en behandeld als een veld in Unicode.

Als deze URL niet is geparseerd op het moment van logboekregistratie, wordt deze exact gekopieerd, dus zonder omzetting naar Unicode.

Als deze URL niet door de HTTP-API kan worden geparseerd, wordt een koppelteken (0x002D) gebruikt ter vervanging van het lege veld.
Protocol StatusDe protocolstatus mag niet groter zijn dan 999.

Als de protocolstatus van het antwoord op een verzoek beschikbaar is, wordt deze in dit veld vastgelegd.

Als de protocolstatus niet beschikbaar is, wordt een koppelteken (0x002D) gebruikt ter vervanging van het lege veld.
SiteIdDit veld wordt niet gebruikt in deze versie van de HTTP-API. In dit veld wordt altijd een vervangend koppelteken (0x002D) weergegeven.
Reason PhraseDit veld bevat een tekenreeks die het soort fout aangeeft dat wordt vastgelegd. Dit veld wordt nooit leeg gelaten.
Queue NameDit de naam van de verzoekwachtrij.
De volgende voorbeeldregels komen uit een HTTP-API-foutenlogboek:
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

Het soort fouten dat in de HTTP-API-logboeken wordt geregistreerd

Geregistreerd worden foutantwoorden aan clients, time-outs van de verbinding, zwevende verzoeken en verbroken verbindingen die verkeerd zijn afgehandeld.

In de volgende lijst wordt een overzicht gegeven van het soort fouten dat in de HTTP-API-logboeken wordt geregistreerd:
  • Antwoorden aan clients Door de HTTP-API wordt een foutantwoord naar een client gestuurd, bijvoorbeeld een 400-fout die is veroorzaakt door een parseerfout in het laatste ontvangen verzoek. Nadat het foutantwoord is verzonden, wordt de verbinding verbroken.
  • Time-outs van de verbindingEr wordt een time-out van de verbinding gegenereerd door de HTTP-API. Als een verzoek nog in behandeling is wanneer een time-out van de verbinding optreedt, wordt het verzoek gebruikt om meer informatie over de verbinding te geven in het foutenlogboek.
  • Zwevende verzoeken Een proces in de gebruikersmodus wordt onverwacht beëindigd terwijl er nog verzoeken in de wachtrij staan die naar dat proces worden geleid. De zwevende verzoeken worden door de HTTP-API vastgelegd in het foutenlogboek.
Specifieke foutsoorten worden aangeduid met Reason Phrase-tekenreeksen die altijd in het laatste veld van elke foutregel worden weergegeven. In de volgende tabel wordt een overzicht gegeven van de HTTP-API-Reason Phrases.
Deze tabel samenvouwenDeze tabel uitklappen
Reason PhraseBeschrijving

AppOfflineEr is een fout 'Service niet beschikbaar' opgetreden (HTTP-fout 503). De service is niet beschikbaar omdat de toepassing door toepassingsfouten offline is gegaan.
AppPoolTimerEr is een fout 'Service niet beschikbaar' opgetreden (HTTP-fout 503). De service is niet beschikbaar omdat het proces voor de groep van toepassingen overbezet is en het verzoek niet kan verwerken.
AppShutdownEr is een fout 'Service niet beschikbaar' opgetreden (HTTP-fout 503). De service is niet beschikbaar omdat de toepassing automatisch is afgesloten als reactie op beheerderbeleid.
BadRequestEr is een parseerfout opgetreden tijdens het verwerken van een verzoek.
Client_ResetDe verbinding tussen de client en de server is beëindigd voordat het verzoek aan een werkproces kon worden toegekend. De meest voorkomende oorzaak hiervoor is dat de verbinding met de server voortijdig is verbroken door de client.
Connection_Abandoned_By_AppPoolEen werkproces van de groep van toepassingen is onverwacht beëindigd of heeft een verzoek zwevend gemaakt door de afhandeling ervan te beëindigen.
Connection_Abandoned_By_ReqQueueEen werkproces van de groep van toepassingen is onverwacht beëindigd of heeft een verzoek zwevend gemaakt door de afhandeling ervan te beëindigen. Specifiek voor Windows Vista en Windows Server 2008.
Connection_DroppedDe verbinding tussen de client en de server is beëindigd voordat het laatste antwoordpakket door de server kon worden verzonden. De meest voorkomende oorzaak hiervoor is dat de verbinding met de server voortijdig is verbroken door de client.
Connection_Dropped_List_FullDe lijst met verbroken verbindingen tussen clients en de server is vol. Specifiek voor Windows Vista en Windows Server 2008.
ConnLimitEr is een fout 'Service niet beschikbaar' opgetreden (HTTP-fout 503). De service is niet beschikbaar omdat de verbindingslimiet op siteniveau is bereikt of overschreden.
Connections_RefusedHet NonPagedPool-kernelgeheugen is gezakt tot onder de 20 MB en http.sys ontvangt geen nieuwe verbindingen meer.
DisabledEr is een fout 'Service niet beschikbaar' opgetreden (HTTP-fout 503). De service is niet beschikbaar omdat een beheerder de toepassing offline heeft gehaald.
EntityTooLargeDe maximale grootte van een entiteit is overschreden.
FieldLengthDe maximale lengte van een veld is overschreden.
ForbiddenTijdens het parseren is een verboden element of reeks aangetroffen.
HeaderEr is een parseerfout opgetreden in een kop.
HostnameEr is een parseerfout opgetreden tijdens het verwerken van een hostnaam.
InternalEr is een interne serverfout opgetreden (HTTP-fout 500).
Invalid_CR/LFEr is een ongeldig Enter-teken of een ongeldige nieuwe regel aangetroffen.
LengthRequiredEr ontbreekt een vereiste lengtewaarde.
N/AEr is een fout 'Service niet beschikbaar' opgetreden (HTTP-fout 503). De service is niet beschikbaar omdat er een interne fout (zoals een geheugentoewijzingsfout) is opgetreden.
N/IEr is een fout 'Niet geïmplementeerd' (HTTP-fout 501) of een fout 'Service niet beschikbaar' (HTTP-fout 503) opgetreden vanwege een onbekende overdrachtscodering.
NumberEr is een parseerfout opgetreden tijdens het verwerken van een getal.
PreconditionEr is niet aan een vereiste voorwaarde voldaan.
QueueFullEr is een fout 'Service niet beschikbaar' opgetreden (HTTP-fout 503). De service is niet beschikbaar omdat de wachtrij voor toepassingsverzoeken vol is.
RequestLengthDe maximale lengte van een verzoek is overschreden.
Timer_AppPoolDe verbinding is verlopen omdat een verzoek te lang in een wachtrij voor een groep van toepassingen heeft gestaan om door een servertoepassing te worden verwerkt. ConnectionTimeout geeft de time-outduur aan. Deze waarde is standaard ingesteld op twee minuten.
Timer_ConnectionIdleDe verbinding is verlopen en blijft inactief. De standaardwaarde van ConnectionTimeout is twee minuten.
Timer_EntityBodyDe verbinding is verlopen voordat de entiteithoofdtekst van het verzoek is aangekomen. Als het duidelijk is dat een verzoek een entiteithoofdtekst heeft, wordt de timer Timer_EntityBody ingeschakeld door de HTTP-API. In eerste instantie is de limiet van deze timer ingesteld op de waarde ConnectionTimeout (gewoonlijk 2 minuten). Elke keer dat er een andere gegevensindicatie wordt ontvangen voor dit verzoek, wordt de timer opnieuw ingesteld door de HTTP-API om de verbinding met twee minuten (of met de waarde van ConnectionTimeout) te verlengen.
Timer_HeaderWaitDe verbinding is verlopen omdat het parseren van de kop voor een verzoek meer tijd heeft gekost dan het standaardmaximum van twee minuten.
Timer_MinBytesPerSecondDe verbinding is verlopen omdat de client niet met een redelijke snelheid een antwoord heeft ontvangen. Het antwoord is met lagere snelheid verzonden dan de standaard 240 bytes per seconde. Deze waarde kan worden beheerd met de metabase-eigenschap MinFileBytesPerSec.
Timer_ReqQueueDe verbinding is verlopen omdat een verzoek te lang in een wachtrij voor een groep van toepassingen heeft gestaan om door een servertoepassing uit de wachtrij te worden gehaald. ConnectionTimeout geeft de time-outduur aan. Deze waarde is standaard ingesteld op twee minuten. Specifiek voor Windows Vista en Windows Server 2008.
Timer_ResponseGereserveerd. Momenteel niet in gebruik.
Timer_SslRenegotiation De verbinding is verlopen omdat SSL-onderhandeling tussen de client en de server langer duurde dan de standaardtime-out van twee minuten.
URLEr is een parseerfout opgetreden tijdens het verwerken van een URL.
URL_LengthEen URL overschrijdt de toegestane grootte.
VerbEr is een parseerfout opgetreden tijdens het verwerken van een werkwoord.
Version_N/SEr is een fout 'Versie niet ondersteund' opgetreden (HTTP-fout 505).

Referenties

Klik voor meer informatie over het toevoegen van extra logboekvelden voor het registeren van HTTP-fouten op het volgende artikelnummer in de Microsoft Knowledge Base:
832975 Er zijn nu aanvullende eigenschappen beschikbaar voor logboekregistratie in het bestand Httperr#.log in IIS 6.0 en IIS 7.0. (Mogelijk alleen beschikbaar in het Engels)

Eigenschappen

Artikel ID: 820729 - Laatste beoordeling: vrijdag 30 november 2012 - Wijziging: 5.0
Trefwoorden: 
kbhttphandlers kbhttp kbapi kberrmsg kbinfo kbfixme kbmsifixme KB820729

Geef ons 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