Fout bij het aanmelden HTTP APIs

Samenvatting

Dit artikel beschrijft de mogelijkheden fouten vastleggen van HTTP-APIs.

Sommige fouten die in een HTTP-toepassing optreden worden automatisch verwerkt door de HTTP API in plaats van dat wordt doorgegeven aan een toepassing voor de verwerking. Dit probleem treedt op omdat de frequentie van dergelijke fouten anders een gebeurtenislogboek, of een aanvraag-handler overspoelen kan.

De volgende onderwerpen worden de verschillende aspecten van de API voor HTTP-fouten vastleggen.
  • HTTP API foutregistratie configureren
    Register bepalen de HTTP API worden fouten, de maximaal toegestane grootte van logboekbestanden en de locatie van de logboekbestanden.
  • Indeling van de HTTP API foutenlogboeken
    De HTTP-API worden logboekbestanden gemaakt die in overeenstemming met de conventies van World Wide Web Consortium (W3C) log bestand. U kunt standaardprogramma's deze logboekbestanden parseren. Echter, in tegenstelling tot de W3C-logboekbestanden, logboekbestanden HTTP API bevatten geen de namen van kolommen.
  • Typen fouten de HTTP API registreert
    De HTTP API vastgelegd veel voorkomende fouten.

Oplossing

HTTP API foutregistratie configureren

Drie waarden in het systeemregister onder de sleutel van een http-\Parameters bepalen de foutregistratie HTTP API. Deze toetsen bevinden zich op de volgende registersleutel:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
Opmerking De locatie en de vorm van de waarden van de systeemconfiguratie kunnen veranderen in latere versies van het Windows-besturingssysteem.

U moet beheerder/lokaal systeem aanmeldingsreferenties hebben de registerwaarden wijzigen en weergeven of wijzigen van de logboekbestanden en de map waarin ze zich bevinden.

Configuratie-informatie in de registerwaarden wordt gelezen als het HTTP API-stuurprogramma wordt gestart. Dus als u de instellingen wijzigt, moet u stoppen, en start het stuurprogramma door de nieuwe waarden. Hiertoe typt u de volgende opdrachten:
net stop http
net start http
De volgende naamgevingsconventie gebruikt als naam voor de logboekbestanden:
httperr + volgnummer + .log
Voorbeeld: httperr4.log
Logboekbestanden worden volgens de maximumgrootte waarmee de registerwaarde ErrorLogFileTruncateSize krijgen. Deze waarde kan niet kleiner dan 1 megabyte (MB).

Als de configuratie van de foutregistratie ongeldig is of als er een defect optreedt terwijl de HTTP API is om de logboekbestanden te schrijven, wordt de HTTP API logboekregistratie Beheerders waarschuwen dat foutregistratie niet plaatsvindt.

De volgende tabel beschrijft de registerwaarden voor de configuratie.
RegisterwaardeBeschrijving
EnableErrorLoggingEen DWORD dat u op TRUE instellen kunt of False foutregistratie inschakelen te schakelen. De standaardwaarde is TRUE.
ErrorLogFileTruncateSizeEen DWORD dat geeft de maximale grootte van het logboekbestand van een fout, in bytes. De standaardwaarde is 1 MB (0x100000).

Opmerking De opgegeven waarde kan niet kleiner zijn dan de standaardwaarde.
ErrorLoggingDirEen tekenreeks die de map waarin de logboekbestanden in de HTTP API wordt geplaatst.

De HTTP API maakt u een submap HTTPERR in de opgegeven map en vervolgens de logboekbestanden worden opgeslagen in de submap. Deze submap en de logboekbestanden wordt dezelfde machtigingsinstellingen. De beheerder en het lokale systeemaccounts hebben volledige toegang. Andere gebruikers hebben geen toegang.

Dit is de standaardmap als de map niet is opgegeven in het register:
%SystemRoot%\System32\LogFiles


Opmerking De tekenreekswaarde ErrorLoggingDir moet een volledige lokale pad. Het kan echter % SystemRoot % bevatten. Een netwerkstation of een netwerkshare kan niet worden gebruikt.

terug naar boven

Indeling van de HTTP API foutenlogboeken

HTTP API logbestanden met fouten in het algemeen hebben dezelfde indeling als W3C foutenlogboeken, met dien verstande dat de logbestanden met fouten HTTP API geen kolomkoppen bevatten. Elke regel van een foutenlogboek HTTP API vastgelegd een fout. De velden worden weergegeven in een bepaalde volgorde. Een enkele spatie (0x0020) scheidt elk veld uit het vorige veld. Plustekens (0x002B) Vervang spaties, tabs en niet-afdrukbare tekens in elk veld.

De volgende tabel bevat de velden en de volgorde van de velden in een logboekrecord fout.
VeldBeschrijving
DatumHet veld datum volgt de W3C-indeling. Dit veld is gebaseerd op de Coordinated Universal Time (UTC). Het veld is altijd tien tekens in de vorm van jjjj-MM-DD. Bijvoorbeeld, wordt 1 mei 2003 uitgedrukt als 05-01-2003.
TijdHet veld volgt de W3C-indeling. Dit veld is gebaseerd op UTC. Het veld is altijd acht tekens in de vorm van MM:HH:SS. Voorbeeld wordt 5:30 PM (UTC) uitgedrukt in 17:30:00.
Client-IP-adresHet IP-adres van de client waarin dit probleem optreedt. De waarde in dit veld kan een IPv4-adres of een IPv6-adres zijn. Als het client-IP-adres een IPv6-adres is, wordt het veld scope-id is ook opgenomen in het adres.
Client-poortHet poortnummer voor de client waarin dit probleem optreedt.
IP-serveradresHet IP-adres van de desbetreffende server. De waarde in dit veld kan een IPv4-adres of een IPv6-adres zijn. Als een IPv6-adres is het IP-adres van de server, wordt het veld scope-id ook opgenomen in het adres.
ServerpoortHet poortnummer van de desbetreffende server.
ProtocolversieDe versie van het protocol dat wordt gebruikt.


Als de verbinding is niet voldoende geanalyseerd om te bepalen welke protocolversie, wordt een afbreekstreepje (0x002D) gebruikt als tijdelijke aanduiding voor het veld leeg.

Als het primaire versienummer of het secundaire versienummer die is geparseerd groter dan is of gelijk aan 10, de versie wordt geregistreerd als HTTP /?.?.
WerkwoordHet werkwoord staat dat de laatste aanvraag is geparseerd gangen. Onbekende woorden worden opgenomen, maar de bewerking die door meer dan 255 bytes is daarom afgekapt. Als een bewerking niet beschikbaar is, wordt een afbreekstreepje (0x002D) gebruikt als tijdelijke aanduiding voor het veld leeg.
CookedURL + QueryDe URL en een query die is gekoppeld aan het worden vastgelegd als een veld dat is gescheiden door een vraagteken (0x3F). Dit veld wordt de waarde afgekapt op de maximale lengte van 4096 bytes.

Als deze URL is geanalyseerd ("gekookt"), is aangemeld met lokale Codetabelconversie en wordt behandeld als een Unicode-veld.

Als deze URL is niet zijn geanalyseerd ("gekookt") op het moment van registratie, is het precies, gekopieerd zonder de Unicode-conversie.

Als deze URL kan niet worden geparseerd door de HTTP API, wordt een afbreekstreepje (0x002D) gebruikt als tijdelijke aanduiding voor het veld leeg.
ProtocolstatusDe protocolstatus kan niet groter zijn dan 999.


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

Als de protocolstatus niet beschikbaar is, wordt een afbreekstreepje (0x002D) gebruikt als tijdelijke aanduiding voor het veld leeg.
Site-idNiet in deze versie van het HTTP-API gebruikt. Een tijdelijke afbreekstreepje (0x002D) wordt altijd weergegeven in dit veld.
Reden woordgroepDit veld bevat een tekenreeks die aangeeft welk type fout dat is vastgelegd. Dit veld is niet leeg zijn.
WachtrijnaamDeze naam van de wachtrij voor aanvragen.
De volgende regels in de steekproef zijn van een foutenlogboek HTTP API:
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
terug naar boven

Soorten fouten die zijn vastgelegd voor de HTTP-API

De HTTP API registreert foutreacties op clients, time-outs van de verbinding, zwevende aanvragen en verbroken verbindingen die niet correct worden verwerkt.

De volgende lijst bevat de soorten fouten die de HTTP API Logboeken:
  • Reacties op clients De HTTP API stuurt een foutmelding naar de client, bijvoorbeeld een 400-fout die wordt veroorzaakt door een fout van de parser in de laatste aanvraag ontvangen. Nadat de API van de HTTP-fout antwoord verzendt, wordt de verbinding gesloten.
  • Time-outs van de verbinding De HTTP API time-out van verbinding. Als een aanvraag is in behandeling wanneer de verbinding time-out, wordt het verzoek om meer informatie over de verbinding in het foutenlogboek gebruikt.
  • Zwevende aanvragen Een gebruikersmodus onverwacht afgesloten terwijl er zijn nog steeds in de wachtrij aanvragen die naar dit proces doorgestuurd. De zwevende aanvragen vastgelegd de HTTP API in het foutenlogboek.
Specifieke fouttypen worden Reden woordgroep tekenreeksen die worden altijd als het laatste veld van elke regel van de fout weergegeven aangeduid. De volgende tabel bevat de HTTP API reden zinnen.
Reden woordgroepBeschrijving

AppOfflineEen service niet beschikbaar fout (een HTTP-fout 503). De service is niet beschikbaar omdat de fouten veroorzaakt de toepassing off line worden genomen.
AppPoolTimerEen service niet beschikbaar fout (een HTTP-fout 503). De service is niet beschikbaar omdat het toepassingsproces pool bezet om de aanvraag te verwerken.
AppShutdownEen service niet beschikbaar fout (een HTTP-fout 503). De service is niet beschikbaar omdat de toepassing is automatisch in reactie op het beheerdersbeleid afgesloten.
BadRequestEen parseringsfout opgetreden tijdens het verwerken van een aanvraag.
Client_ResetDe verbinding tussen de client en de server is afgesloten voordat de aanvraag kan worden toegewezen aan een werkproces. De meest voorkomende oorzaak van dit probleem is dat de client de verbinding met de server is voortijdig gesloten.
Connection_Abandoned_By_AppPoolEen werkproces uit de groep van toepassingen is onverwacht afgesloten of een aanvraag in behandeling door het sluiten van de hendel in het zwevend.
Connection_Abandoned_By_ReqQueueEen werkproces uit de groep van toepassingen is onverwacht afgesloten of een aanvraag in behandeling door het sluiten van de hendel in het zwevend. Bepaalde Windows Vista en latere versies en Windows Server 2008 en latere versies.
Connection_DroppedDe verbinding tussen de client en de server is afgesloten voordat de server de laatste antwoordpakket kan verzenden. De meest voorkomende oorzaak van dit probleem is dat de client de verbinding met de server is voortijdig gesloten.
Connection_Dropped_List_FullDe lijst van verbroken verbindingen tussen clients en de server is vol. Bepaalde Windows Vista en latere versies en Windows Server 2008 en latere versies.
ConnLimitEen service niet beschikbaar fout (een HTTP-fout 503). De service is niet beschikbaar omdat de site niveau verbindingslimiet is bereikt of overschreden.
Connections_RefusedDe kernel NonPagedPool geheugen gegaan dan 20MB en http.sys is gestopt met het ontvangen van nieuwe verbindingen
UitgeschakeldEen service niet beschikbaar fout (een HTTP-fout 503). De service is niet beschikbaar omdat een beheerder heeft de toepassing off line genomen.
EntityTooLargeEen entiteit overschrijdt de maximale grootte die is toegestaan.
De FieldLengthEen veld limiet is overschreden.
VerbodenEen verboden element of de reeks is opgetreden bij het parseren.
KoptekstEen parseringsfout opgetreden in een koptekst.
HostnaamEen parseringsfout opgetreden tijdens het verwerken van een hostnaam.
InterneEr is een interne fout opgetreden (een HTTP-fout 500).
Invalid_CR/LFEen ongeldige regelterugloop of regelinvoer opgetreden.
LengthRequiredEr ontbreekt een waarde voor de vereiste lengte.
N/AEen service niet beschikbaar fout (een HTTP-fout 503). De service is niet beschikbaar omdat er een interne fout (bijvoorbeeld een geheugentoewijzingsfout of een URL-reservering-lijst een conflict) is opgetreden.
N/IEen niet geïmplementeerd-fout (een HTTP-fout 501) of een service niet beschikbaar-fout (een HTTP-fout 503) vanwege een onbekende codering voor overdracht.
NummerEen parseringsfout opgetreden tijdens het verwerken van een getal.
VoorwaardeEen vereiste voorwaarde ontbreekt.
QueueFullEen service niet beschikbaar fout (een HTTP-fout 503). De service is niet beschikbaar omdat de toepassing aanvraagwachtrij vol is.
RequestLengthEen aanvraaglimiet is overschreden.
Timer_AppPoolDe verbinding is verlopen omdat een aanvraag in een wachtrij voor een servertoepassing uit de wachtrij en verwerkt deze groep van toepassingen te lang gewacht. De duur van deze time-out is ConnectionTimeout. Deze waarde is standaard ingesteld op twee minuten.
Timer_ConnectionIdleDe verbinding is verlopen en niet-actief blijft. De standaardduur ConnectionTimeout is twee minuten.
Timer_EntityBodyDe verbinding is verlopen voordat het hoofdgedeelte van de aanvraag is ontvangen. Wanneer een aanvraag duidelijk een hoofdgedeelte heeft, wordt de timer Timer_EntityBody de HTTP API ingeschakeld. De limiet van deze timer is eerst ingesteld op de waarde van ConnectionTimeout (meestal twee minuten). Elke keer dat een andere aanduiding van de gegevens in deze aanvraag wordt ontvangen, wordt de HTTP API de timer om de verbinding van twee minuten (of wat is opgegeven in ConnectionTimeout) opnieuw ingesteld.
Timer_HeaderWaitDe verbinding is verlopen omdat de kop voor een aanvraag parseren langer dan de standaardlimiet van twee minuten duurde.
Timer_MinBytesPerSecondDe verbinding is verlopen omdat de client niet van een antwoord met een redelijke snelheid ontvangen is. De respons verzenden is langzamer dan de standaardwaarde is 240 bytes per seconde. Dit kan worden bestuurd met de metabase-eigenschap MinFileBytesPerSec .
Timer_ReqQueueDe verbinding is verlopen omdat een aanvraag in een wachtrij groep van toepassingen voor een servertoepassing om uit de wachtrij te lang gewacht. De duur van deze time-out is ConnectionTimeout. Deze waarde is standaard ingesteld op twee minuten. Bepaalde Windows Vista en latere versies en Windows Server 2008 en latere versies.
Timer_ResponseGereserveerd. Momenteel niet gebruikt.
Timer_SslRenegotiation
De verbinding is verlopen omdat de onderhandelingen tussen de client en server SSL duurde langer dan de standaard time-out van twee minuten.
URLEen parseringsfout opgetreden tijdens het verwerken van een URL.
URL_LengthEen URL overschrijdt de maximaal toegestane grootte.
WerkwoordEen parseringsfout opgetreden tijdens het verwerken van een werkwoord.
Version_N/SEen versie-niet-ondersteunde fout (een HTTP-fout 505).

terug naar boven

Referenties

Voor meer informatie over het toevoegen van extra logboekregistratievelden voor IIS HTTP-fouten vastleggen, klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base:

832975 aanvullende eigenschappen zijn nu beschikbaar voor registratie in het Httperr # .log-bestand in IIS 6.0 en IIS 7.0

Eigenschappen

Artikel-id: 820729 - Laatst bijgewerkt: 14 feb. 2017 - Revisie: 1

Windows Server 2008 R2 Standard, Windows Server 2008 R2 Enterprise, Windows Server 2008 Enterprise, Windows Server 2012 R2 Standard, Windows Server 2012 R2 Datacenter, Windows Server 2012 R2 Essentials, Windows Server 2012 R2 for Embedded Systems, Windows Server 2012 R2 Foundation, Windows Server 2012 Standard, Windows Server 2012 Standard, Windows Server 2012 Standard, Windows Server 2012 Standard, Windows Server 2012 Datacenter, Windows Server 2012 Datacenter, Windows Server 2012 Datacenter, Windows Server 2012 Datacenter, Windows Server 2012 Essentials, Windows 10, Windows 10 Enterprise, released in July 2015, Windows 10 Pro, released in July 2015, Windows 10 Version 1511, Windows 8.1, Windows 8.1 Enterprise, Windows 8.1 Pro, Windows 8, Windows 8 Pro, Windows 8 Enterprise, Windows 7 Professional, Windows 7 Enterprise

Feedback