Сценарий 2. Пример средства синтаксического анализа с использованием трассировки etw
Чтобы создать отчет трассировки трассировки Событий Windows для компонента API HTTP-сервера, выполните действия, как показано в разделе "Создание отчета трассировки трассировки ETW" статьи Сценарий 1. Пример времени ожидания HTTP с помощью трассировки ETW и команд Netsh, но воспроизведите ошибку, относяющуюся к этому сценарию. В этом примере осуществляется доступ к веб-приложению с клиентского компьютера, что приводит к отображению на клиенте сообщения "400 bad request". Эти действия выполняются на сервере, так как на нем размещается веб-приложение.
Просмотр трассировки и диагностики
Полученный CSV-файл для трассировок можно просмотреть в Excel или любом средстве, поддерживающем формат CSV. В таблице 2 ниже приведены выдержки из примера файла трассировки (httptrace.csv). В отчете трассировки в столбце "Level" отображается запись со значением "2", которое представляет собой ошибку. Как отмечалось выше, компонент API HTTP-сервера следует уровням трассировки событий Windows, определенным в статье Сложный тип сложного типа LevelType.
К уровням трассировки событий Windows относятся: 1 Критический; 2 Ошибка; 3 Предупреждение; 4 Информационные; 5 Подробно.
При этой ошибке тип события (столбец типа) сообщает "ParseRequestFailed". В последующих столбцах для события ParseRequestFailed мы видим запись InvalidHost. Эта запись означает, что указанный узел в HTTP-запросе является неправильным в соответствии с протоколом HTTP. Обратите внимание, что столбец с записью InvalidHost не включен в таблицу для краткости и для того, чтобы избежать фрагментов несмежных столбцов.
Чтобы устранить эту проблему синтаксического анализа, необходимо исправить веб-клиент в соответствии с HTTP RFC.
Имя события | Тип | Идентификатор события | Версия | Channel | Level |
---|---|---|---|---|---|
EventTrace | Заголовок | 0 | 2 | 0 | 0 |
Microsoft-Windows-HttpService | AddUrl | 31 | 0 | 16 | 4 |
Microsoft-Windows-HttpService | ConnConnect | 21 | 0 | 16 | 4 |
Microsoft-Windows-HttpService | ConnIdAssgn | 22 | 0 | 16 | 4 |
Microsoft-Windows-HttpService | RecvReq | 1 | 0 | 16 | 4 |
Microsoft-Windows-HttpService | ParseRequestFailed | 52 | 0 | 16 | 2 |
Microsoft-Windows-HttpService | LogFileWrite | 51 | 0 | 16 | 4 |
Таблица 2. Выдержки из примера отчета о трассировке для проблемы синтаксического анализа