ID на статията: 820729
Разгъване на всички | Сгъване на всички

На тази страница

Кратко изложение

Тази статия описва възможностите за регистриране на грешки на API за Hypertext Transfer Protocol (HTTP).

Някои от възникващите в базирани на HTTP приложения грешки автоматично се обработват от API за HTTP, вместо да се предават обратно за обработване от приложение. Причината за това е, че в противен случай честотата на такива грешки може да претрупа регистрационния файл или манипулатора на приложения.

В темите по-долу е описано различните аспекти на регистриране на грешки в API за HTTP:

Допълнителна информация

Конфигуриране на регистриране на грешки в API за HTTP

За да конфигурираме регистрирането на грешки в API за HTTP вместо вас, отидете на секцията "Решете моя проблем". Ако предпочитате сами да конфигурирате регистрирането на грешки в API за HTTP, отидете на секцията "Нека реша проблема сам".

Решете моя проблем



За да решите този проблем автоматично, щракнете върху бутона или връзката Fix it. В диалоговия прозорец Изтегляне на файлове щракнете върху Изпълнение и следвайте стъпките в съветника "Fix it".

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


Забележки
  • Възможно е този съветник да е само на английски език. Автоматичната поправка обаче работи и за версии на Windows на други езици.
  • Ако не сте на проблемния компютър, запишете решението на "Fix it" на флаш устройство или компактдиск и след това го изпълнете на проблемния компютър.



Нека разреша проблема сам

Три стойности на системния регистър под ключ HTTP \Parameters контролират регистрирането на грешки в API за HTTP. Тези ключове се намират при следния ключ от системния регистър:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
Забележка Местоположението и формулярът на стойностите на конфигурацията може да се променят при следващи версии на операционната система Microsoft Windows.

Трябва да имате идентификационни данни за администратор/локална система, за да промените стойностите на системния регистър и за да видите или модифицирате регистрационните файлове и папката, в която се съдържат.

Информацията за конфигурацията в стойностите на системния регистър се чете при стартиране на драйвера на API за HTTP. Следователно, ако промените настройките, трябва да спрете и да рестартирате драйвера, за да се прочетат новите стойности. За да направите това, въведете следните команди в конзолата:
net stop http
net start http
Следните правила за имена се използват за задаване на име на регистрационни файлове:
httperr + sequence number + .log
Например: httperr4.log
Регистрационните файлове минават в цикли, когато достигнат максималния размер, зададен от стойността ErrorLogFileTruncateSize на системния регистър. Тази стойност не може да бъде по-малка от един мегабайт (МБ).

Ако конфигурацията на регистрирането на грешки не е валидна или в случай на неизправност при записването на регистрационните файлове от API за HTTP, API за HTTP използва регистриране на събития за уведомяване на администраторите, че не се извършва регистриране на грешки.

В таблицата по-долу са описани стойностите на конфигурацията на системния регистър.
Сгъване на таблицатаРазгъване на таблицата
Стойност на системния регистърОписание
EnableErrorLoggingDWORD, която можете да зададете на "TRUE" за разрешаване на регистрирането на грешки или на "FALSE" за забраняването му. Стойността по подразбиране е "TRUE".
ErrorLogFileTruncateSizeDWORD, която задава максималния размер на регистрационен файл за грешки, в байтове. Стойността по подразбиране е един МБ (0x100000).

Забележка Зададената стойност не може да е по-малка от стойността по подразбиране.
ErrorLoggingDirНиз, който указва папката, където API за HTTP поставя своите регистрационни файлове.

API за HTTP създава подпапка HTTPERR в указаната папка, след което съхранява регистрационните файлове в подпапката. Тази подпапка и регистрационните файлове получават едни и същи настройки за разрешение. Администраторът и локалните системни акаунти имат пълен достъп. Други потребители нямат достъп.

По-долу е папката по подразбиране, когато папката не е указана в системния регистър:
%SystemRoot%\System32\LogFiles

Забележка Стойността ErrorLoggingDir на низа трябва да е пълното име на локалния път. Въпреки това тя може да съдържа %SystemRoot%. Не могат да се използват мрежово устройство или мрежов дял.

Формат на регистрите на грешки на API за HTTP

Обикновено регистрицонните файлове за грешки на HTTP API имат същият формат като регистрите на грешки на W3C, с изключението, че тези на API за HTTP не съдържат заглавия на колони. Всеки ред от регистър на грешки на API за HTTP записва една грешка. Полетата се появяват в определен ред. Единичен интервал (0x0020) отделя всяко поле от предишното. Във всяко поле знаците "плюс" (0x002B) заменят интервалите, табулаторите и непечатаемите контролни знаци.

Таблицата по-долу идентифицира полетата и техния ред в записа на регистъра на грешки.
Сгъване на таблицатаРазгъване на таблицата
ПолеОписание
ДатаПолето за дата следва формата на W3C. Това поле е базирано на координираното световно време (UTC). Полето за дата винаги се състои от десет знака във формата на ГГГГ-ММ-ДД. Например 1 май 2003 г. се изразява като 2003-05-01.
ЧасПолето за час следва формата на W3C. Това поле е базирано на UTC. Полето за час винаги се състои от осем знака във формата на ММ:ЧЧ:СС. Например 5:30 след обяд (UTC) се изразява като 17:30:00.
IP адрес на клиентаIP адресът на засегнатия клиент. Стойността в това поле може да бъде IPv4 адрес или IPv6 адрес. Ако IP адресът на клиента е IPv6 адрес, полето ScopeId също се включва в адреса.
Клиентски портНомера на порта за засегнатия клиент.
IP адрес на сървъраIP адресът на засегнатия сървър. Стойността в това поле може да бъде IPv4 адрес или IPv6 адрес. Ако IP адресът на сървъра е IPv6 адрес, полето ScopeId също се включва в адреса.
Сървърен портНомера на порта на засегнатия сървър.
Версия на протоколВерсията на използвания протокол.

Ако връзката не е анализирана достатъчно за определяне на версията на протокола, се използва тире (0x002D) като заместител за празното поле.

Ако анализираният номер на основната версия или този на второстепенната версия е по-голям или равен на 10, версията се регистрира като HTTP/?.?.
ГлаголГлаголът указва, че последната анализирана заявка преминава. Непознати глаголи са включени, но всеки по-голям от 255 байта глагол се съкращава до тази дължина. Ако няма наличен глагол, се използва тире (0x002D) като заместител за празното поле.
Сготвен URL адрес + заявкаURL адресът и всяка заявка, която е свързана с него, се регистрират като едно поле, отделено с въпросителен знак (0x3F). Това поле е съкратено до ограничението му за дължина от 4096 байта.

Ако този URL адрес е анализиран ("сготвен"), той се регистрира с преобразуване на локална кодова страница и се третира като Unicode поле.

Ако този URL адрес не е анализиран ("сготвен") до времето на регистриране, той се копира точно, без преобразуване в Unicode.

Ако HTTP API не може да анализира URL адреса, се използва тире (0x002D) като заместител за празното поле.
Състояние на протоколСъстоянието на протокола не може да бъде по-голямо от 999.

Ако състоянието на протокола на отговора на заявка е налично, то се регистрира в това поле.

Ако състоянието на протокола не е налично, се използва тире (0x002D) като заместител за празното поле.
ИД на сайтНе се използва в тази версия на HTTP API. Винаги се показва тире (0x002D) като заместител на това поле.
Причинна фразаТова поле съдържа низ, който идентифицира типа грешка, която се регистрира. Това поле никога не остава празно.
Име на опашкатаТова е името на опашката със заявки.
Следните примерни редове са от регистъра на грешки на 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

Типове грешки, които се регистрират от HTTP API

HTTP API регистрира отговори за грешка към клиенти, изтекло време за връзка, осиротели заявки и разпаднали се връзки, които се обработват погрешно.

Списъкът по-долу идентифицира типовете грешки, които се регистрират от HTTP API:
  • Отговори към клиенти HTTP API изпраща на клиента отговор за грешка, например грешка 400, причинена от грешка при анализирането в последно получената заявка. HTTP API прекратява връзката, след като изпрати отговора за грешка.
  • Изтекло време за връзка HTTP API прекратява връзката поради изтекло време. Ако има чакаща заявка към момента, когато връзката се прекратява поради изтекло време, то тази заявка се използва за предоставяне на повече информация относно връзката в регистъра на грешки.
  • Осиротели заявки Процес на потребителски режим неочаквано се прекратява, докато все още има чакащи заявки, които са насочени към него. HTTP API регистрира осиротелите заявки в регистъра на грешки.
Конкретни типове грешки са определени чрез низовете Причинна фраза, които винаги се показват като последното поле от всеки ред на грешка. Таблицата по-долу идентифицира причинните фрази на HTTP API.
Сгъване на таблицатаРазгъване на таблицата
Причинна фразаОписание

AppOfflineВъзникна грешка за недостъпна услуга (HTTP грешка 503). Услугата не е достъпна, понеже приложението е било свалено офлайн поради грешки в него.
AppPoolTimerВъзникна грешка за недостъпна услуга (HTTP грешка 503). Услугата не е достъпна, понеже обработката на набора приложения е твърде заета, за да обработи заявката.
AppShutdownВъзникна грешка за недостъпна услуга (HTTP грешка 503). Услугата не е достъпна, понеже приложението се изключва автоматично в отговор на администраторските правила.
BadRequestВъзникна грешка при анализирането, докато се обработва заявка.
Client_ResetВръзката между клиента и сървъра беше прекратена, преди заявката да може да бъде възложена на работен процес. Най-честата причина за това е, че клиентът преждевременно затваря връзката си към сървъра.
Connection_Abandoned_By_AppPoolРаботен процес от набора приложения неочаквано се прекратява или превръща чакаща заявка в осиротяла, като затваря манипулатора си.
Connection_Abandoned_By_ReqQueueРаботен процес от набора приложения неочаквано се прекратява или превръща чакаща заявка в осиротяла, като затваря манипулатора си. Конкретно за Windows Vista и Windows Server 2008.
Connection_DroppedВръзката между клиента и сървъра беше затворена, преди сървърът да може да изпрати пакетът с последен отговор. Най-честата причина за това е, че клиентът преждевременно затваря връзката си към сървъра.
Connection_Dropped_List_FullСписъкът с разпаднали се връзки между клиентите и сървъра е пълен. Конкретно за Windows Vista и Windows Server 2008.
ConnLimitВъзникна грешка за недостъпна услуга (HTTP грешка 503). Услугата не е достъпна, понеже ограничението на връзки на ниво сайт е достигнато или надминато.
Connections_RefusedПаметта NonPagedPool на ядрото е паднала под 20 МБ и http.sys спира да получава нови връзки
DisabledВъзникна грешка за недостъпна услуга (HTTP грешка 503). Услугата не е достъпна, понеже приложението е свалено офлайн от администратор.
EntityTooLargeОбект надвишава масималния позволен размер.
FieldLengthЛимитът за дължина на поле е надвишен.
ForbiddenПри анализа е срещнат забранен елемент или поредица.
HeaderВъзникна грешка при анализирането в заглавка.
HostnameВъзникна грешка при анализирането, докато се обработва име на хост.
InternalВъзникна вътрешна сървърна грешка (HTTP грешка 500).
Invalid_CR/LFВъзникнаха недопустими знаци за нов абзац или нов ред.
LengthRequiredЛипсва задължителната стойност за дължина.
N/AВъзникна грешка за недостъпна услуга (HTTP грешка 503). Услугата не е достъпна, понеже възникна вътрешна грешка (като неуспешно заделяне на памет).
N/IВъзникна грешка, която не е реализирана (HTTP грешка 501), или възникна грешка за недостъпна услуга (HTTP грешка 503) поради неизвестно кодиране на прехвърлянето.
NumberВъзникна грешка при анализирането, докато се обработва номер.
PreconditionЛипсва задължителната предпоставка.
QueueFullВъзникна грешка за недостъпна услуга (HTTP грешка 503). Услугата не е достъпна, понеже опашката за заявки на приложението е пълна.
RequestLengthНадвишено е ограничението за дължин на заявката.
Timer_AppPoolВръзката изтече, понеже заявката чакаше прекалено дълго в опашката на набора приложения, за да се извади от опашката и обработи от сървърно приложение. Тази продължително на времето на изчакване е ConnectionTimeout. По подразбиране стойността е настроена на две минути.
Timer_ConnectionIdleВръзката е изтекла и остава неактивна. По подразбиране продължителността ConnectionTimeout е две минути.
Timer_EntityBodyВръзката изтече преди пристигането на тялото на заявката. Когато е ясно, че заявката има тяло, HTTP API включва таймера Timer_EntityBody. Първоначално ограничението на таймера е настроено на стойността ConnectionTimeout (обикновено 2 минути). Всеки път, когато към тази заявка се получава друга индикация на данни, HTTP API нулира таймера, за да даде на връзката още две минути (или колкото са зададени в ConnectionTimeout).
Timer_HeaderWaitВръзката изтече, понеже анализирането на заглавката за заявка отне повече време от зададените по подразбиране две минути.
Timer_MinBytesPerSecondВръзката изтече, понеже клиентът не получи отговор достатъчно бързо. Честотата на изпращане на отговори е по-ниска от зададената по подразбиране 240 байта/сек. Това може да бъде управлявано правилно с метабазата MinFileBytesPerSec.
Timer_ReqQueueВръзката изтече, понеже заявката чакаше прекалено дълго в опашката на набора приложения, за да се извади от опашката от сървърно приложение. Тази продължително на времето на изчакване е ConnectionTimeout. По подразбиране стойността е настроена на две минути. Конкретно за Windows Vista и Windows Server 2008.
Timer_ResponseЗапазено. В момента не се използва.
Timer_SslRenegotiation Връзката изтече, понеже предоговаряне на SLL между клиента и сървъра отне повече от зададеното по подразбиране време на изчакване от две минути.
URLВъзникна грешка при анализирането, докато се обработва URL адрес.
URL_LengthURL адрес надвишава максимално позволения размер.
ГлаголВъзникна грешка при анализирането, докато се обработва глагол.
Version_N/SВъзникна грешка за неподдържана версия (HTTP грешка 505).

Библиография

За допълнителна информация относно добавянето на допълнителни полета за регистриране за IIS HTTP регистриране на грешки, щракнете върху следния номер на статия, за да я видите в базата знания на Microsoft:
832975 Допълнителни свойства вече са налични за регистриране във файлът Httperr#.log в IIS 6.0 и IIS 7.0 (Това може да е на английски)
Забележка Това е статия "БЪРЗА ПУБЛИКАЦИЯ", създадена директно в рамките на организацията за поддръжка на Microsoft. Информацията, съдържаща се тук, се ограничава до съдържащото се в нея и е дадена в отговор на появили се проблеми. В резултат на краткия срок до тяхното предлагане, материалите може да съдържат печатни грешки и могат да бъдат преработвани във всеки момент без предизвестие. Вижте Условия на ползване за други съображения.

Свойства

ID на статията: 820729 - Последна рецензия: 30 ноември 2012 г. - Редакция: 2.0
Ключови думи: 
kbhttphandlers kbhttp kbapi kberrmsg kbinfo kbfixme kbmsifixme KB820729

Изпратете обратна информация

 

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