Kļūda, piesakoties programmā HTTP API

Kopsavilkums

Šajā rakstā ir aprakstīts HTTP API kļūdu reģistrēšanas iespējas.

Dažas kļūdas, kas rodas uz HTTP balstītā lietojumprogrammā, automātiski apstrādā HTTP API, un tās netiek nodotas apstrādei lietojumprogrammā. Tas notiek tāpēc, ka šādu kļūdu biežums pretējā gadījumā notikumu žurnālu vai lietojumprogrammas apdarinātāju.

Tālāk izklāstītajās tēmās aprakstīti dažādi HTTP API kļūdu reģistrēšanas aspekti.

Risinājums

HTTP API kļūdu reģistrēšanas konfigurēšana

Trīs reģistra vērtības atslēgā HTTP \Parameters noteikt HTTP API kļūdu reģistrēšanu. Šīs atslēgas atrodas šajā reģistra atslēgā:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
Piezīme. Atrašanās vieta un forma konfigurācijas vērtību jaunākās operētājsistēmas Windows versijās var mainīties.

Jums jābūt administratora/lokālās sistēmas akreditācijas datus, lai mainītu reģistra vērtības un skatīt vai mainīt žurnāla failus un mapes, kurā tie atrodas.

Reģistra vērtībās saglabātā konfigurācijas informācija tiek nolasīta, startējot HTTP API draiveri. Tādēļ, ja maināt iestatījumus, ir pārtraukt un pēc tam restartējiet draiveris, lai nolasītu jaunās vērtības. Lai to izdarītu, ierakstiet šādas konsoles komandas:
net stop http
net start http
Žurnālfailu nosaukšanai tiek izmantota šāda nosaukumdošanas konvencija:
httperr + log sērijas numurs
Piemērs: httperr4.log
Žurnālfaili tiek veidoti no jauna sasniedzot maksimālo lielumu, kas norāda ErrorLogFileTruncateSize reģistra vērtību. Šī vērtība nedrīkst būt mazāka par vienu megabaitu (MB).

Ja kļūdu reģistrēšanas konfigurācija nav derīga vai jebkāda veida kļūme rodas HTTP API raksta datus žurnālfailos, HTTP API izmanto notikumu reģistrēšanu, lai informētu administratorus, ka kļūdu reģistrēšana nenotiek.

Šī tabula apraksta reģistra konfigurācijas vērtības.
Reģistra vērtībaApraksts
EnableErrorLoggingDWORD , ko var iestatīt iespējot kļūdu reģistrēšana TRUE vai FALSE, lai to atspējotu. Noklusējuma vērtība ir TRUE.
ErrorLogFileTruncateSizeDWORD , kas norāda kļūdu žurnālfaila maksimālo lielumu baitos. Noklusējuma vērtība ir viens MB (0x100000).

Piezīme. Norādītā vērtība nevar būt mazāka par noklusējuma vērtību.
ErrorLoggingDirVirkne , kas norāda, kur HTTP API saglabā reģistrācijas failus.

HTTP API norādītajā mapē izveido apakšmapi HTTPERR , un pēc tam saglabā žurnālfailus apakšmapē. Šai apakšmapei un žurnālfailiem saņem vienādi atļauju iestatījumi. Administratora un lokālās sistēmas kontiem ir pilna piekļuve. Citi lietotāji nevar piekļūt.

Šī ir noklusējuma mape, ja tā nav norādīta reģistrā:
%SystemRoot%\System32\LogFiles


Piezīme. ErrorLoggingDir virknes vērtība ir jābūt pilnībā kvalificētam lokālajam ceļam. Tomēr tas var ietvert % SystemRoot %. Nevar izmantot tīkla diskā vai tīkla koplietojumā.

uz sākumu

HTTP API kļūdu žurnālu formāts

Parasti HTTP API kļūdu žurnālfailiem ir tāds pats formāts kā W3C kļūdu žurnāliem, izņemot to, ka HTTP API kļūdu žurnālfailos nav kolonnu virsrakstu. Katrā HTTP API kļūdu žurnāla rindiņā tiek reģistrēta viena kļūda. Lauki tiek sakārtoti noteiktā secībā. Katru lauku no iepriekšējā atdala viena atstarpe (0x0020). Katrā laukā pluszīmes (0x002B) aizstāj atstarpes rakstzīmes, tabulatorus un nedrukājamās kontroles rakstzīmes.

Tabulā norādīti lauki un lauku secība kļūdu žurnāla ieraksta.
LauksApraksts
DatumsLaukam datums ir W3C formāts. Šis lauks ir balstīts uz universālo koordinēto laiku (UTC). Laukam datums vienmēr ir desmit rakstzīmes, ko pieraksta kā GGGG-MM-DD. Piemēram, 2003 1. maijs tiek izteikts kā 2003-05-01.
LaiksLaukam laiks ir W3C formāts. Šis lauks ir balstīts uz UTC. Laukam time vienmēr ir astoņas rakstzīmes, ko pieraksta kā mm: HH: ss. Piemēram, 5:30 PM (UTC) izsaka kā 17:30:00.
Klienta IP adreseIetekmētā klienta IP adrese. Vērtība šajā laukā var būt IPv4 adrese vai IPv6 adrese. Ja klienta IP adrese ir IPv6 adrese, ir iekļauts arī lauks ScopeId adresi.
Klienta portsIetekmētā klienta porta numurs.
Servera IP adreseIetekmētā servera IP adrese. Vērtība šajā laukā var būt IPv4 adrese vai IPv6 adrese. Ja servera IP adrese ir IPv6 adrese, ir iekļauts arī lauks ScopeId adresi.
Servera portsIetekmētā servera porta numurs.
Protokola versijaProtokola versija, kas tiek izmantota.


Ja savienojums nav pietiekami parsēts, lai noteiktu protokola versiju, tiek izmantota defise (0x002D) vietturi tukšā lauka.

Ja galvenās versijas vai jaunākās versijas numurs, kas tiek parsēts ir lielāks vai vienāds ar 10, versija tiek reģistrēta kā HTTP /?.?.
VārdsVerba stāvoklis, ko pēdējo pieprasījumu, kas ir parsētais. Ir iekļauti nezināmi verbi, bet jebkurš Verbs, kas ir garāks par 255 baitiem tiek apcirsts. Ja Verbs nav pieejams, defise (0x002D) tiek izmantots tukšā lauka vietturi.
CookedURL + vaicājumsURL un ar to saistīts vaicājums tiek reģistrēts kā viens lauks, kas ir atdalīts ar jautājuma zīmi (0x3F). Šis lauks tiek apcirsts līdz 4096 baitiem garuma ierobežojums.

Ja šis URL ir parsēts ("apstrādāti"), tas tiek reģistrēts, izmantojot lokālās kodu lapas konvertēšanu un tiek uzskatīts par unikoda lauku.

Ja šis URL ir nav parsēts ("apstrādāti") reģistrēšanas laikā, tas tiek precīzi nokopēts, nekonvertējot to unikodā.

Ja HTTP API nevar parsēt šo URL, defise (0x002D) tiek izmantots tukšā lauka vietturi.
Protokola statussProtokola statusa vērtība nevar būt lielāka par 999.


Ja atbilde uz pieprasījumu Protokola statuss ir pieejams, tas tiek reģistrēts šajā laukā.

Ja Protokola statuss nav pieejams, defise (0x002D) tiek izmantots tukšā lauka vietturi.
SiteIdNetiek izmantota šajā HTTP API versijā. Šajā laukā vienmēr tiek lietota viettura defise (0x002D).
Iemesla frāzeŠajā laukā ir virkne, kas identificē reģistrētās kļūdas veida. Šis lauks nekad netiek atstāts tukšs.
Rindas nosaukumsŠis ir pieprasījuma rindas nosaukums.
Tālāk norādītās parauga rindiņas ir no HTTP API kļūdu žurnāla:
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
uz sākumu

Veida kļūdas, ko reģistrē HTTP API

HTTP API reģistrē kļūdas ziņojumus klientiem, savienojuma taimautus, bāreņpieprasījumus un izbeigtos savienojumus, kas tiek nepareizi apstrādāti.

Šajā sarakstā norāda kļūdas, ko reģistrē HTTP API veidiem:
  • Atbildes klientiem HTTP API nosūta klientam kļūdas ziņojumu, piemēram, kļūdu Nr. 400, ko izraisījusi pēdējā saņemtā pieprasījuma parsēšanas kļūda. HTTP API nosūta kļūdas ziņojumu, kad tas aizver savienojumu.
  • Savienojuma taimauts HTTP API iestājies taimauts savienojums. Ja pieprasījumu līdz brīdim, kad iestājas taimauts savienojums, pieprasījums tiek izmantots, lai sniegtu papildinformāciju par savienojumu kļūdu žurnālā.
  • Orphaned pieprasījumi Lietotāja režīma procesam negaidīti pārtrauc kamēr rindā vēl ir ievietoti pieprasījumi, kas tiek maršrutēti šim procesam. HTTP API reģistrē bāreņpieprasījumus kļūdu žurnālā.
Konkrēti kļūdu tipi tiek raksturoti ar Iemesla frāzes virknēm, kas vienmēr ir redzamas katras kļūdas rindiņas pēdējā laukā. Tālāk redzamajā tabulā ir identificētas HTTP API iemesla frāzes.
Iemesla frāzeApraksts

AppOfflinePakalpojuma nepieejamības kļūda (HTTP kļūda 503). Pakalpojums nav pieejams, jo lietojumprogrammas kļūdu dēļ lietojumprogramma pārslēgusies bezsaistē.
AppPoolTimerPakalpojuma nepieejamības kļūda (HTTP kļūda 503). Pakalpojums nav pieejams, jo lietojumprogrammu pūla process ir pārāk aizņemts, lai apstrādātu pieprasījumu.
AppShutdownPakalpojuma nepieejamības kļūda (HTTP kļūda 503). Pakalpojums nav pieejams, jo lietojumprogramma tika automātiski izslēgta, ievērojot administratora politiku.
BadRequestApstrādājot pieprasījumu, radās parsēšanas kļūda.
Client_ResetKlienta un servera savienojums tika slēgts, pirms pieprasījumu varēja piešķirt darbinieka procesam. Šī problēma visbiežāk rodas tāpēc ir, ka klients priekšlaicīgi slēdz savienojumu ar serveri.
Connection_Abandoned_By_AppPoolDarbinieka process lietojumprogrammas pūlā ir negaidīti vai atstājis gaidošu pieprasījumu, aizverot tā turi.
Connection_Abandoned_By_ReqQueueDarbinieka process lietojumprogrammas pūlā ir negaidīti vai atstājis gaidošu pieprasījumu, aizverot tā turi. Noteiktu Windows Vista un jaunākās versijās un Windows Server 2008 un jaunākās versijās.
Connection_DroppedKlienta un servera savienojums tika slēgts, pirms serveris varēja nosūtīt galīgo atbildes paketi. Šī problēma visbiežāk rodas tāpēc ir, ka klients priekšlaicīgi slēdz savienojumu ar serveri.
Connection_Dropped_List_FullStarp klientu un serveri izbeigto savienojumu saraksts ir pilns. Noteiktu Windows Vista un jaunākās versijās un Windows Server 2008 un jaunākās versijās.
ConnLimitPakalpojuma nepieejamības kļūda (HTTP kļūda 503). Pakalpojums nav pieejams, jo ir sasniegts vai pārsniegts vietnes līmeņa savienojumu ierobežojums.
Connections_RefusedKodola NonPagedPool atmiņa ir samazinājusies zem 20MB un http. sys ir pārtraucis jaunu savienojumu
AtspējotsPakalpojuma nepieejamības kļūda (HTTP kļūda 503). Pakalpojums nav pieejams, jo administrators ir pārslēdzis programmu bezsaistes režīmā.
EntityTooLargeEntītija pārsniedz maksimālo pieļaujamo lielumu.
FieldLengthIr pārsniegts lauka garuma ierobežojums.
AizliegtsParsēšanas laikā tika atrasts aizliegts elements vai secība.
GalveneGalvenē radās parsēšanas kļūda.
Resursdatora nosaukumsApstrādājot resursdatora nosaukumu, radās parsēšanas kļūda.
IekšējāRadās iekšēja servera kļūda (HTTP kļūda 500).
Invalid_CR/LFRadās nederīga rakstatgrieze vai rindas padeve.
LengthRequiredTrūkst nepieciešamā garuma vērtības.
N/APakalpojuma nepieejamības kļūda (HTTP kļūda 503). Pakalpojums nav pieejams, jo radās iekšēja kļūda (piemēram, atmiņas iedalīšanas kļūme vai konflikts URL rezervācijas sarakstu).
N/INeīstenošanu saistīta kļūda (HTTP kļūda 501) vai pakalpojuma nepieejamības kļūda (HTTP kļūda 503) nezināmas pārsūtīšanas kodēšanas dēļ.
NumursApstrādājot skaitli, radās parsēšanas kļūda.
NosacījumsTrūkst obligāta priekšnoteikuma.
QueueFullPakalpojuma nepieejamības kļūda (HTTP kļūda 503). Pakalpojums nav pieejams, jo lietojumprogrammas pieprasījumu rinda ir pilna.
RequestLengthIr pārsniegts pieprasījuma garuma ierobežojums.
Timer_AppPoolSavienojums beidzies, jo pieprasījums pārāk ilgi gaidīja lietojumprogrammu pūla rindā servera lietojumprogramma to rindpārlēces rindas un apstrādātu. Šī taimauta ilgums ir ConnectionTimeout. Pēc noklusējuma šī vērtība ir iestatīta uz divām minūtēm.
Timer_ConnectionIdleSavienojums beidzies, un tas ir dīkstāvē. Noklusējuma ConnectionTimeout ilgums ir divas minūtes.
Timer_EntityBodySavienojums beidzies, pirms tika saņemts pieprasījuma entītijas pamatteksts. Ja skaidri pieprasījumam ir entītijas pamatteksts, HTTP API ieslēgs Timer_EntityBody taimeri. Sākumā šī taimera ierobežojumam ir iestatīta vērtība ConnectionTimeout (parasti divas minūtes). Katru reizi, kad par šo pieprasījumu tiks saņemta norāde šo citu datu, HTTP API atiestatīs taimeri, piešķirot savienojumam vēl divas minūtes (vai kāds ir norādīts ConnectionTimeout).
Timer_HeaderWaitSavienojums beidzies, jo galvenei, kas parsē pieprasījumu, bija vajadzīgs vairāk laika nekā noklusējuma ierobežojumam noteiktās divas minūtes.
Timer_MinBytesPerSecondSavienojums beidzies, jo klients nesaņēma pietiekami ātru atbildi. Atbildes sūtīšanas ātrums bija lēnāks nekā noklusējuma vērtība 240 baiti sekundē. To var kontrolēt ar metabāzes rekvizītu MinFileBytesPerSec .
Timer_ReqQueueSavienojums beidzies, jo pieprasījums pārāk ilgi gaidīja lietojumprogrammu pūla rindā servera lietojumprogramma to rindpārlēces rinda. Šī taimauta ilgums ir ConnectionTimeout. Pēc noklusējuma šī vērtība ir iestatīta uz divām minūtēm. Noteiktu Windows Vista un jaunākās versijās un Windows Server 2008 un jaunākās versijās.
Timer_ResponseRezervēts. Pašlaik netiek izmantota.
Timer_SslRenegotiation
Savienojums beidzies, jo atkārtotās SSL pārrunas starp klientu un serveri prasīja vairāk laika nekā noklusējuma taimauts, ir divas minūtes.
URLApstrādājot vietrādi URL, radās parsēšanas kļūda.
URL_LengthPārsniegts vietrāža URL maksimālais pieļaujamais garums.
VārdsApstrādājot verbu, radās parsēšanas kļūda.
Version_N/SAr neatbalstītu versiju saistīta kļūda (HTTP kļūda 505).

uz sākumu

Atsauces

Lai iegūtu papildinformāciju par to, kā pievienot papildu reģistrēšanas laukus IIS HTTP kļūdu reģistrēšanai, noklikšķiniet uz šī raksta numura un lasiet Microsoft zināšanu bāzes rakstu:

832975 tagad ir pieejami papildu rekvizīti reģistrēšanai Httperr # log failu programmā IIS 6.0 un IIS 7.0

Rekvizīti

Raksta ID: 820729. Pēdējo reizi pārskatīts: 2017. gada 10. febr.. Pārskatījums: 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

Atsauksmes