Fel vid loggning i HTTP-API:er
Den här artikeln beskriver felloggningsfunktionerna i API:er (HyperText Transfer Protocol) programprogram.
Ursprunglig produktversion: Windows Server 2008 R2, Windows Server 2008, Windows Server 2012 R2, Windows Server 2012, Windows 10, Windows 8.1
Ursprungligt KB-nummer: 820729
Sammanfattning
Vissa fel som inträffar i ett HTTP-baserat program hanteras automatiskt av HTTP-API:et i stället för att skickas tillbaka till ett program för hantering. Det här beteendet beror på att frekvensen för sådana fel annars kan översvämma en händelselogg eller en programhanterare.
Följande avsnitt beskriver de olika aspekterna av HTTP API-felloggning.
Konfigurera HTTP API-felloggning
Registerinställningarna styr HTTP API-loggarnas fel, den maximala tillåtna storleken på loggfiler och loggfilernas plats.Format för HTTP API-felloggarna
HTTP-API:et skapar loggfiler som följer W3C-loggfilkonventionerna (World Wide Web Consortium). Du kan använda standardverktyg för att parsa dessa loggfiler. Men till skillnad från W3C-loggfiler innehåller HTTP API-loggfilerna inte kolumnnamnen.Typer av fel som HTTP API-loggarna
HTTP-API:et loggar många vanliga fel.
Följande metoder beskriver lösningen av HTTP API-felloggning.
Konfigurera HTTP API-felloggning
Tre registervärden under en HTTP \Parameters-nyckel styr HTTP API-felloggningen. Dessa nycklar finns i registernyckeln: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
.
Obs!
Platsen och formen på konfigurationsvärdena kan ändras i senare versioner av Windows-operativsystemet.
Du måste ha autentiseringsuppgifter för administratör/lokalt system för att ändra registervärdena och för att kunna visa eller ändra loggfilerna och mappen som innehåller dem.
Konfigurationsinformationen i registervärdena läss när HTTP API-drivrutinen startar. Om du ändrar inställningarna måste du stoppa och sedan starta om drivrutinen för att läsa de nya värdena. Det gör du genom att skriva följande konsolkommandon:
net stop http
net start http
Följande namngivningskonvention används för att namnge loggfilerna:
httperr + sekvensnummer + .log
Exempel: httperr4.log
Loggfiler växlas när de når den maximala storlek som registervärdet ErrorLogFileTruncateSize anger. Det här värdet får inte vara mindre än 1 MB.
Om konfigurationen av felloggning inte är giltig, eller om någon typ av fel inträffar när HTTP-API:et skriver till loggfilerna, använder HTTP-API:et händelseloggning för att meddela administratörer om att felloggning inte inträffar.
I följande tabell beskrivs registerkonfigurationsvärdena.
Registervärde | Beskrivning |
---|---|
EnableErrorLogging | Ett DWORD som du kan ange till TRUE för att aktivera felloggning eller falskt för att inaktivera det. Standardvärdet är TRUE. |
ErrorLogFileTruncateSize | Ett DWORD som anger den maximala storleken på en felloggfil i byte. Standardvärdet är 1 MB (0x100000). Det angivna värdet får inte vara mindre än standardvärdet. |
ErrorLoggingDir | En sträng som anger mappen där HTTP-API:et placerar sina loggningsfiler. HTTP-API:et skapar en undermapp HTTPERR i den angivna mappen och lagrar sedan loggfilerna i undermappen. Den här undermappen och loggfilerna får samma behörighetsinställningar. Administratörskonton och lokala systemkonton har fullständig åtkomst. Andra användare har inte åtkomst. Följande exempel är standardmappen när mappen inte anges i registret: %SystemRoot%\System32\LogFiles Strängvärdet ErrorLoggingDir måste vara en fullständigt kvalificerad lokal sökväg. Den kan dock innehålla %SystemRoot% . Det går inte att använda en nätverksenhet eller nätverksresurs. |
Format för HTTP API-felloggarna
I allmänhet har HTTP API-felloggfiler samma format som W3C-felloggar, förutom att HTTP API-felloggfiler inte innehåller kolumnrubriker. Varje rad i en HTTP API-fellogg registrerar ett fel. Fälten visas i en viss ordning. Ett blankstegstecken (0x0020) separerar varje fält från föregående fält. I varje fält ersätter plustecken (0x002B) blankstegstecken, flikar och icke-utskrivbara kontrolltecken.
I följande tabell identifieras fälten och ordningen på fälten i en felloggpost.
Fält | Beskrivning |
---|---|
Datum | Fältet Datum följer W3C-formatet. Det här fältet baseras på Coordinated Universal Time (UTC). Fältet Datum är alltid 10 tecken i form av ÅÅÅÅ-MM-DD. Till exempel uttrycks 1 maj 2003 som 2003-05-01. |
Tid | Fältet Tid följer W3C-formatet. Det här fältet baseras på UTC. Tidsfältet är alltid åtta tecken i form av MM:HH:SS. Till exempel uttrycks 17:30 (UTC) som 17:30:00. |
IP-adress (Client Internet Protocol) | IP-adressen för den berörda klienten. Värdet i det här fältet kan vara antingen en IPv4-adress eller en IPv6-adress. Om klientens IP-adress är en IPv6-adress inkluderas även fältet ScopeId i adressen. |
Klientport | Portnumret för den berörda klienten. |
Serverns IP-adress | IP-adressen för den berörda servern. Värdet i det här fältet kan vara antingen en IPv4-adress eller en IPv6-adress. Om serverns IP-adress är en IPv6-adress inkluderas även fältet ScopeId i adressen. |
Serverport | Portnumret för den berörda servern. |
Protokollversion | Den version av protokollet som används. Om anslutningen inte har parsats tillräckligt för att fastställa protokollversionen används ett bindestreck (0x002D) som platshållare för det tomma fältet. Om antingen huvudversionsnumret eller delversionsnumret som parsas är större än eller lika med 10 loggas versionen som HTTP/?.?. |
Verb | Verbet anger den sista begäran som parsas. Okända verb ingår, men alla verb som är mer än 255 byte trunkeras till den här längden. Om ett verb inte är tillgängligt används ett bindestreck (0x002D) som platshållare för det tomma fältet. |
CookedURL + Fråga | URL:en och alla frågor som är associerade med den loggas som ett fält som avgränsas med ett frågetecken (0x3F). Det här fältet trunkeras med en längd på 4 096 byte. Om den här URL:en parsades ("kokt" loggas den med lokal kodsidaskonvertering och behandlas som ett Unicode-fält. Om den här URL:en inte har parsats ("kokt") vid tidpunkten för loggningen kopieras den exakt, utan någon Unicode-konvertering. Om HTTP-API:et inte kan parsa den här URL:en används ett bindestreck (0x002D) som platshållare för det tomma fältet. |
Protokollstatus | Protokollstatusen får inte vara större än 999. Om protokollstatusen för svaret på en begäran är tillgänglig loggas den i det här fältet. Om protokollstatusen inte är tillgänglig används ett bindestreck (0x002D) som platshållare för det tomma fältet. |
SiteId | Används inte i den här versionen av HTTP-API:et. Ett platshållar bindestreck (0x002D) visas alltid i det här fältet. |
Orsaksfras | Det här fältet innehåller en sträng som identifierar den typ av fel som loggas. Det här fältet lämnas aldrig tomt. |
Könamn | Det är namnet på begärandekön. |
Följande exempelrader kommer från en HTTP API-fellogg:
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
Typer av fel som HTTP API-loggarna
HTTP API loggar felsvar till klienter, tidsgränser för anslutning, överblivna begäranden och borttagna anslutningar som hanteras felaktigt.
I följande lista identifieras de typer av fel som HTTP API-loggarna:
Svar på klienter
HTTP-API:et skickar ett felsvar till en klient, till exempel ett 400-fel som orsakas av ett parsningsfel i den senast mottagna begäran. När HTTP-API:et har skickat felsvaret stängs anslutningen.Tidsgränser för anslutning
HTTP-API:et överskrider tidsgränsen för en anslutning. Om en begäran väntar när anslutningen överskrider tidsgränsen används begäran för att ge mer information om anslutningen i felloggen.Överblivna begäranden
En process i användarläge stoppas oväntat medan det fortfarande finns köade begäranden som dirigeras till den processen. HTTP-API:et loggar överblivna begäranden i felloggen. Specifika feltyper namnges av orsaksfrassträngar som alltid visas som det sista fältet på varje felrad. Följande tabell identifierar HTTP API-orsaksfraser.
Orsaksfras | Beskrivning |
---|---|
AppOffline | Ett fel uppstod när tjänsten inte var tillgänglig (http-fel 503). Tjänsten är inte tillgänglig eftersom programfel gjorde att programmet togs offline. |
AppPoolTimer | Ett fel uppstod när tjänsten inte var tillgänglig (http-fel 503). Tjänsten är inte tillgänglig eftersom programpoolsprocessen är för upptagen för att hantera begäran. |
AppShutdown | Ett fel uppstod när tjänsten inte var tillgänglig (http-fel 503). Tjänsten är inte tillgänglig eftersom programmet stängs av automatiskt som svar på administratörsprincipen. |
BadRequest | Ett parsningsfel uppstod när en begäran bearbetades. |
Client_Reset | Anslutningen mellan klienten och servern stängdes innan begäran kunde tilldelas till en arbetsprocess. Den vanligaste orsaken till det här beteendet är att klienten stänger anslutningen till servern i förtid. |
Connection_Abandoned_By_AppPool | En arbetsprocess från programpoolen har oväntat avslutats eller överblivit en väntande begäran genom att stänga handtaget. |
Connection_Abandoned_By_ReqQueue | En arbetsprocess från programpoolen har oväntat avslutats eller överblivit en väntande begäran genom att stänga handtaget. Gäller för Windows Vista och senare versioner och för Windows Server 2008 och senare versioner. |
Connection_Dropped | Anslutningen mellan klienten och servern stängdes innan servern kunde skicka sitt slutliga svarspaket. Den vanligaste orsaken till det här beteendet är att klienten stänger anslutningen till servern i förtid. |
Connection_Dropped_List_Full | Listan över borttagna anslutningar mellan klienter och servern är full. Gäller för Windows Vista och senare versioner och för Windows Server 2008 och senare versioner. |
ConnLimit | Ett fel uppstod när tjänsten inte var tillgänglig (http-fel 503). Tjänsten är inte tillgänglig eftersom anslutningsgränsen på platsnivå har nåtts eller överskridits. |
Connections_Refused | Kernelminnet nonPagedPool har sjunkit under 20 MB och http.sys har slutat ta emot nya anslutningar |
Inaktiverad | Ett fel uppstod när tjänsten inte var tillgänglig (http-fel 503). Tjänsten är inte tillgänglig eftersom en administratör har tagit programmet offline. |
EntityTooLarge | En entitet överskred den maximala tillåtna storleken. |
FieldLength | En gräns för fältlängd överskreds. |
Ej tillåtet | Ett förbjudet element eller en sekvens uppfylldes under parsningen. |
Rubrik | Ett parsningsfel uppstod i en rubrik. |
Hostname | Ett parsningsfel uppstod när ett värdnamn bearbetades. |
Intern | Ett internt serverfel uppstod (ett HTTP-fel 500). |
Invalid_CR/LF | En ogiltig vagnretur eller radmatning har inträffat. |
LengthRequired | Ett obligatoriskt längdvärde saknades. |
EJ TILLÄMPLIGT | Ett fel uppstod när tjänsten inte var tillgänglig (http-fel 503). Tjänsten är inte tillgänglig eftersom ett internt fel (till exempel ett minnesallokeringsfel eller en konflikt med URL-reservationslistan) uppstod. |
Ej tillämpligt | Ett icke-implementerat fel uppstod (http-fel 501) eller så uppstod ett fel om att tjänsten inte är tillgänglig (ett HTTP-fel 503) på grund av en okänd överföringskodning. |
Tal | Ett parsningsfel uppstod när ett tal bearbetades. |
Förutsättning | En nödvändig förutsättning saknades. |
QueueFull | Ett fel uppstod när tjänsten inte var tillgänglig (http-fel 503). Tjänsten är inte tillgänglig eftersom kön för programbegäran är full. |
RequestLength | En gräns för begärandelängd överskreds. |
Timer_AppPool | Anslutningen upphörde att gälla eftersom en begäran väntade för länge i en programpoolskö för att ett serverprogram skulle avköeras och bearbetas. Den här tidsgränsen är ConnectionTimeout. Som standard är det här värdet inställt på två minuter. |
Timer_ConnectionIdle | Anslutningen har upphört att gälla och förblir inaktiv. Standardvaraktigheten för ConnectionTimeout är två minuter. |
Timer_EntityBody | Anslutningen gick ut innan begärandeentitetens entitetstext anlände. När en begäran tydligt har en entitetstext aktiverar HTTP-API:et Timer_EntityBody timer. Först anges gränsen för den här timern till värdet ConnectionTimeout (vanligtvis två minuter). Varje gång en annan dataindikering tas emot på den här begäran återställer HTTP-API:et timern för att ge anslutningen ytterligare två minuter (eller vad som anges i ConnectionTimeout). |
Timer_HeaderWait | Anslutningen upphörde att gälla eftersom rubrikparsningen för en begäran tog längre tid än standardgränsen på två minuter. |
Timer_MinBytesPerSecond | Anslutningen upphörde att gälla eftersom klienten inte fick något svar med rimlig hastighet. Svarsfrekvensen var långsammare än standardvärdet på 240 byte per sekund. Vilket kan styras med metabasegenskapen MinFileBytesPerSec. |
Timer_ReqQueue | Anslutningen upphörde att gälla eftersom en begäran väntade för länge i en programpoolskö för att ett serverprogram skulle avkönas. Den här tidsgränsen är ConnectionTimeout. Som standard är det här värdet inställt på två minuter. Gäller för Windows Vista och senare versioner och för Windows Server 2008 och senare versioner. |
Timer_Response | Reserverade. Används inte för närvarande. |
Timer_SslRenegotiation |
Anslutningen upphörde eftersom SSL-omförhandlingen (Secure Sockets Layer) mellan klienten och servern tog längre tid än standardtidsgränsen på två minuter. |
URL | Ett parsningsfel uppstod när en URL bearbetades. |
URL_Length | En URL överskred den maximala tillåtna storleken. |
Verb | Ett parsningsfel uppstod när ett verb bearbetades. |
Version_N/S | Ett versionsfel som inte stöds inträffade (http-fel 505). |
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för