Номер статті: 820729
Розгорнути все | Згорнути все

На цій сторінці

Підсумки

У цій статті описано можливості журналювання помилок інтерфейсів API протоколів передавання гіпертексту (HTTP).

Інтерфейс API HTTP автоматично обробляє певні помилки, які виникли в застоснуках на базі протоколу HTTP замість того, щоб повертати їх назад у застосунки для обробки. Ця ситуація виникає через частотність появи таких помилок, які в іншому разі переповнювали б журнал подій або обробник застосунку.

У розділах нижче описано різні аспекти журналювання помилок в інтерфейсі API HTTP.

Додаткові відомості

Настроювання журналювання помилок інтерфейсом API HTTP

Щоб автоматично настроїти журналювання помилок інтерфейсом API HTTP, перейдіть до розділу "Автоматичне виправлення". Щоб настроїти журналювання помилок інтерфейсом API HTTP вручну, перейдіть до розділу "Виправлення вручну".

Автоматичне виправлення



Щоб виправити цю проблему автоматично, натисніть кнопку Fix it або виберіть розташоване під нею посилання. У діалоговому вікні Завантаження файлу натисніть кнопку Виконати та дотримуйтесь інструкцій майстер Fix it Wizard.

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


Примітки
  • Цей майстер доступний тільки англійською мовою. Утім засіб автоматичного виправлення неполадок працює в усіх мовних версіях ОС Windows.
  • Якщо ви працюєте не за тим комп’ютером, на якому виявлено неполадку, рішення Fix it можна зберегти на флеш-пам’ять або компакт-диск, а потім запустити його на потрібному комп’ютері.



Виправлення вручну

Журналюванням помилок інтерфейсу API HTTP керують три значення реєстру в розділі HTTP \Parameters. Їх розташовано в наведеному нижче розділі реєстру.
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
Примітка. Розташування та форма значень конфігурації можуть відрізнятись у новіших версіях операційної системи Microsoft Windows.

Щоб змінити значення реєстру, переглянути та змінити файли журналу й папку, яка їх містить, необхідно мати облікові дані адміністратора або локальної системи.

Відомості про конфігурацію, які містяться у значеннях реєстру, зчитуються під час запуску драйвера інтерфейсу API HTTP. Тому щоб після змінення параметрів зчитати нові значення, необхідно зупинити драйвер, а потім перезапустити його. Щоб це зробити, у консоль потрібно ввести наведені нижче команди.
net stop http
net start http
Для імен файлів журналу застосовується наведена нижче угода про іменування.
httperr + номер послідовності + .log
Приклад: httperr4.log
Нові файли журналу створюються після того, як старі досягнуть максимального розміру, визначеного значенням параметра ErrorLogFileTruncateSize реєстру. Це значення не може бути менше за 1 мегабайт (МБ).

Якщо конфігурація журналювання помилок недійсна або якщо під час записування файлів журналу інтерфейсом API HTTP виникне будь-яка неполадка, то інтерфейс API HTTP використає журналювання подій, щоб повідомити адміністраторів про неможливість виконання журналювання помилок.

У наведеній нижче таблиці описано значення конфігурації реєстру.
Згорнути цю таблицюРозгорнути цю таблицю
Значення реєструОпис
EnableErrorLoggingДля значення DWORD можна встановити значення TRUE, щоб активувати журналювання помилок, або FALSE, щоб дезактивувати його. TRUE – це значення за промовчанням.
ErrorLogFileTruncateSizeЗначення DWORD, що визначає максимальний розмір файлу журналу помилок (у байтах). 1 МБ (0x100000) – це значення за промовчанням.

Примітка. Указане значення не може бути менше за значення за промовчанням.
ErrorLoggingDirРядок, що визначає папку, в яку інтерфейс API HTTP записує свої файли журналювання.

Інтерфейс API HTTP у вказаній папці створює вкладену папку HTTPERR, а потім зберігає в ній файли журналу. Ця вкладена папка й файли журналу отримують однакові параметри дозволів. Облікові записи адміністратора та локальної системи мають повний доступ. Інші користувачі доступу не мають.

Нижче наведено папку, яка використовується як папка за промовчанням, якщо її не вказано в реєстрі.
%SystemRoot%\System32\LogFiles

Примітка. Значення рядка ErrorLoggingDir має бути повним локальним шляхом. Однак він може містити змінну середовища %SystemRoot%. Не можна використовувати мережний диск або мережну папку.

Формат журналів помилок інтерфейсу API HTTP

У цілому формат журналів помилок інтерфейсу API HTTP не відрізняється від формату журналів помилок W3C за винятком того, що перші не містять заголовків стовпців. У кожен рядок журналу помилок інтерфейсу API HTTP записується одна помилка. Поля відображаються в певному порядку. Кожне поле відокремлено одне від одного символом пробілу (0x0020). У кожному полі знаки "плюс" (0x002B) замінюють символи пробілів, табуляції та недрукованих керуючих символів.

У наведеній нижче таблиці визначено поля та порядок їх розташування в записі журналу помилок.
Згорнути цю таблицюРозгорнути цю таблицю
ПолеОпис
ДатаПоле "Дата" відповідає формату W3C. Дата відображається у форматі всесвітнього координованого часу (UTC). Поле "Дата" завжди містить десять символів і має такий формат: РРРР-ММ-ДД. Наприклад, 1 травня 2003 р. відображено як 2003-05-01.
ЧасПоле "Час" відповідає формату W3C. Час відображається у форматі всесвітнього координованого часу (UTC). Поле "Час" завжди містить вісім символів і має такий формат: ГГ:ХХ:СС. Наприклад, 17:30 (UTC) відображено як 17:30:00.
IP-адреса клієнтаIP-адреса постраждалого клієнта. Значення цього поля може бути таким: "Адреса IPv4" або "Адреса IPv6". Якщо IP-адреса клієнта – це адреса IPv6, це означає, що вона також містить поле "Ідентифікатор області".
Порт клієнтаНомер порту постраждалого клієнта.
IP-адреса сервераIP-адреса постраждалого сервера. Значення цього поля може бути таким: "Адреса IPv4" або "Адреса IPv6". Якщо IP-адреса – це адреса IPv6, це означає, що вона також містить поле "Ідентифікатор області".
Порт сервераНомер порту постраждалого сервера.
Версія протоколуВерсія протоколу, який використовується.

Якщо під час виконання аналізу підключення версію протоколу визначити не вдалося, то для пустого поля використовуватиметься дефіс (0x002D) як покажчик місця заповнення.

Якщо номер головної або проміжної аналізованих версій дорівнює 10 або більше 10, то версія реєструватиметься як HTTP/?.?.
VerbСтан команди після виконання аналізу останнього запиту. Невідомі команди також включено, однак команди, довші за 255 байтів, скорочуються до цієї довжини. Якщо команда недоступна, для пустого поля використовується дефіс (0x002D) як покажчик місця заповнення.
CookedURL + QueryURL-адреса та запит, пов’язаний із нею, реєструються як одне поле, в якому їх розділено знаком запитання "?" (0x3F). Це поле скорочується до максимальної довжини в 4 096 байт.

Якщо цю URL-адресу було проаналізовано, вона реєструється з перетворенням на локальну кодову сторінку й обробляється як поле в кодуванні Юнікод.

Якщо цю URL-адресу не було проаналізовано під час журналювання, вона копіюється без перетворення в Юнікод.

Якщо інтерфейсу API HTTP не вдалося проаналізувати цю URL-адресу, для пустого поля використовується дефіс (0x002D) як покажчик місця заповнення.
Стан протоколуСтан протоколу не може перевищувати значення "999".

Якщо стан протоколу відповіді на запит доступний, він реєструється в цьому полі.

Якщо стан протоколу недоступний, то для пустого поля використовується дефіс (0x002D) як покажчик місця заповнення.
Ідентифікатор сайтуНе використовується в цій версії інтерфейсу API HTTP. У цьому полі завжди відображається дефіс (0x002D) як покажчик місця заповнення.
Вираз причиниЦе поле містить рядок, який визначає тип зареєстрованої помилки. Це поле завжди заповнено.
Ім’я чергиЦе – ім’я черги запиту.
Нижче наведено зразки рядків із журналу помилок інтерфейсу API HTTP.
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

Типи помилок із журналів інтерфейсу API HTTP

Інтерфейс API HTTP реєструє відповіді клієнтам про помилку, вичерпання часу очікування на підключення, загублені запити й роз’єднані підключення, оброблені неналежним чином.

У наведеному нижче списку визначено типи помилок, які реєструються інтерфейсом API HTTP.
  • Відповіді клієнтам. Інтерфейс API HTTP надсилає клієнту відповідь про помилку, наприклад помилку 400, яку спричинила помилка виконання аналізу останнього отриманого запиту. Після того, як інтерфейс API HTTP надсилає відповідь про помилку, підключення роз’єднується.
  • Вичерпання часу очікування на підключення. Інтерфейс API HTTP реєструє вичерпання часу очікування на підключення. Якщо в момент вичерпання часу очікування на підключення запит перебуває в черзі, то він використовується для надання журналу помилок додаткових відомостей про підключення.
  • Загублені запити. Процес користувацького режиму неочікувано завершується, тоді як направлені йому запити досі очікують у черзі. Інтерфейс API HTTP реєструє загублені запити в журналі помилок.
Тип помилки зазначено в рядках Вираз причини, які завжди відображаються як останні поля кожного запису про помилку. У наведеній нижче таблиці визначено вирази причин інтерфейсу API HTTP.
Згорнути цю таблицюРозгорнути цю таблицю
Вираз причиниОпис

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Термін підключення минув до прибуття тіла сутності запиту. Коли стає зрозуміло, що запит має тіло сутності, інтерфейс API HTTP вмикає таймер Timer_EntityBody. Спочатку для обмеження таймера встановлено значення ConnectionTimeout (зазвичай 2 хвилини). Під час кожного отримання даних за цим запитом інтерфейс API HTTP скидає таймер, щоб продовжити підключення ще на дві хвилини (або на інший період часу, визначений параметром ConnectionTimeout).
Timer_HeaderWaitТермін підключення минув, оскільки виконання аналізу заголовка запиту перевищило обмеження за промовчанням, яке становить дві хвилини.
Timer_MinBytesPerSecondТермін підключення минув, оскільки клієнт не отримав відповіді з очікуваною швидкістю. Швидкість надсилання відповіді була нижчою за швидкість, установлену за промовчанням (240 байт/с). Її можна змінювати за допомогою властивості MinFileBytesPerSec метабази.
Timer_ReqQueueТермін підключення минув, оскільки запит задовго очікував у черзі пулу застосунку на те, щоб серверний застосунок вивів його з неї. Тривалість цього часу очікування визначається параметром ConnectionTimeout. За промовчанням встановлено значення "Дві хвилини". Стосується лише ОС Windows Vista та Windows Server 2008.
Timer_ResponseЗарезервовано. Наразі не використовується.
Timer_SslRenegotiation Термін підключення минув, оскільки повторне узгодження SSL між клієнтом і сервером тривало довше за час очікування за промовчанням, що становить дві хвилини.
URLПід час обробки URL-адреси сталася помилка виконання аналізу.
URL_LengthURL-адреса перевищила максимально дозволений розмір.
VerbПід час обробки команди сталася помилка виконання аналізу.
Version_N/SСталася помилка "Версія не підтримується" (помилка HTTP 505).

Посилання

Для отримання докладних відомостей про додавання полів для журналювання помилок IIS HTTP клацніть наведений нижче номер статті, щоб переглянути її в базі знань Microsoft.
832975 Додаткові властивості для журналювання тепер доступні у файлі Httperr#.log у службах IIS 6.0 та IIS 7.0 (може бути англійською мовою)
Примітка. Це екстрена стаття, яку написала служба підтримки Microsoft. Інформація в цій статті призначена для вирішення нових проблем і надається "як є". З огляду на швидкість її підготовки та публікації, ця стаття може містити орфографічні помилки і її може бути змінено будь-коли без попереднього повідомлення. Додаткову інформацію див. в повідомленні про авторське право.

Властивості

Номер статті: 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