Регистриране на грешки в API за HTTP

Резюме

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

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

Следните теми описват различните аспекти на регистриране на грешки в HTTP API.

Решение

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

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

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

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

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

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

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

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

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


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

обратно в началото

Форматиране на регистрационните файлове на API за HTTP грешки

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

Таблицата по-долу идентифицира полетата и реда на полетата в регистрационния файл запис на грешка.
ПолеОписание
ДатаПолето за дата следва формата на W3C. Това поле е базирано на координирано световно време (UTC). Дата винаги се състои от десет знака във формата на ГГГГ-ММ-ДД. Например 1 май 2003 г. се изразява като 2003-05-01.
ВремеПолето за час следва формата на W3C. Това поле е базирано на UTC. Полето за час винаги е осем знака във формата на MM:HH:SS. Например 17:30:00 (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). Това поле е съкратено до ограничението му за дължина на 4 096 байта.

Ако този 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 пъти връзка. Ако искане до когато връзката изтекло, заявката се използва за предоставяне на повече информация относно връзката в регистъра на грешки.
  • Orphaned заявки Процес на потребителски режим неочаквано спре докато все още чакащи заявки, които са насочени към него. 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 спира да получава нови връзки
ЗабраненоВъзникна грешка за недостъпна услуга (HTTP грешка 503). Услугата не е достъпна, защото администраторът приложението е свалено офлайн.
EntityTooLargeОбект надвишава максималния размер, който е разрешен.
FieldLengthНадвишено е ограничението за дължина на поле.
ЗабраненоПри анализа е срещнат забранен елемент или поредица.
Горен колонтитулВъзникна грешка при анализирането в заглавка.
Име на хостВъзникна синтактична грешка при обработката на хост.
ВътрешнаВътрешна сървърна грешка (HTTP грешка 500).
Invalid_CR/LFВъзникна недопустими знаци за нов абзац или нов ред.
LengthRequiredЛипсва задължителната стойност за дължина.
N/AВъзникна грешка за недостъпна услуга (HTTP грешка 503). Услугата не е достъпна, защото Възникна вътрешна грешка (например при разпределение на памет или необходима списък конфликт).
N/IНе е изпълнена грешка (HTTP грешка 501) или Възникна грешка за недостъпна услуга (HTTP грешка 503) поради неизвестно кодиране на прехвърлянето.
НомерСинтактична грешка при обработката на номера.
ПредпоставкаЛипсва задължителната предпоставка.
QueueFullВъзникна грешка за недостъпна услуга (HTTP грешка 503). Услугата не е достъпна, понеже опашката за заявки на приложението е пълна.
RequestLengthНадвишено е ограничението за дължина на заявка.
Timer_AppPoolВръзката изтече, понеже заявката чакаше прекалено дълго в опашката на набора приложения за сървърно приложение de-опашката и обработи. Това време е 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

Свойства

ИД на статията: 820729 – Последен преглед: 16.01.2017 г. – Редакция: 2

Обратна връзка