HttpTracing трассировки <HTTP>

Общие сведения

Элемент <httpTracing> позволяет настроить выборочную трассировку событий на основе запросов для входящих запросов IIS. <httpTracing> содержит <traceUrls> элемент , который содержит коллекцию <add> элементов. Каждый <add> элемент определяет уникальный URL-адрес для включения трассировки.

Примечание

Трассировка событий Windows (ETW) — это высокоскоростное средство трассировки общего назначения, предоставляемое операционной системой. Используя механизм буферизации и ведения журнала, реализованный в ядре, etW предоставляет механизм трассировки событий, вызванных как приложениями в пользовательском режиме, так и драйверами устройств в режиме ядра. Кроме того, etW позволяет включать и отключать ведение журнала динамически, упрощая выполнение подробной трассировки в рабочих средах без необходимости перезагрузки или перезапуска приложения. Механизм ведения журнала использует буферы для каждого процессора, которые записываются на диск потоком асинхронного модуля записи. Это позволяет крупномасштабным серверным приложениям записывать события с минимальными нарушениями.

Примечание

Чтобы включить трассировку трассировки на основе запросов IIS, установите TracingModule.

По умолчанию СЛУЖБЫ IIS выдают события трассировки событий windows на основе запросов для всех URL-адресов через поставщик IIS: WWW Server с GUID {3A2A4E84-4C21-4981-AE10-3FDA0D9B0F83} (подробные сведения можно найти в элементе <traceProviderDefinitions> ). Чтобы включить фильтр URL-адресов для трассировки событий Windows, заданный <traceUrls> коллекцией в <httpTracing> элементе , первый (наименее значимый) бит флагов трассировки должен иметь значение 1 при запуске сеанса трассировки. Например, чтобы включить события трассировки событий WINDOWS на основе запросов IIS только для URL-адресов, настроенных в <traceUrls> коллекции, установите флаги трассировки 0xFFFFFFFF для сеанса трассировки с поставщиком IIS: WWW Server. Такие флаги трассировки позволяют использовать фильтр URL-адресов, а также все области трассировки. Чтобы включить одни и те же события для всех URL-адресов, установите вместо этого флаги трассировки 0xFFFFFFE .

Примечание

Фильтр URL-адресов, определенный <traceUrls> в коллекции в элементе <httpTracing> , влияет только на трассировку неудачных запросов IIS и не влияет на трассировку неудачных запросов.

Совместимость

Версия Примечания
IIS 10.0 Элемент <httpTracing> не был изменен в IIS 10.0.
IIS 8,5 Элемент <httpTracing> не был изменен в IIS 8.5.
IIS 8,0 Элемент <httpTracing> не был изменен в IIS 8.0.
IIS 7,5 Элемент <httpTracing> не был изменен в IIS 7.5.
IIS 7.0 Элемент <httpTracing> появился в IIS 7.0.
IIS 6,0 Н/Д

Настройка

Элемент <httpTracing> включен в установку iis 7 по умолчанию.

Инструкции

Для элемента IIS 7 отсутствует пользовательский интерфейс <httpTracing> . Примеры программного доступа к элементу <httpTracing> см. в разделе Примеры кода этого документа.

Конфигурация

Элемент можно настроить <httpTracing> на уровне сервера в файле ApplicationHost.config либо на уровне сайта, приложения или каталога в файле Web.config.

Атрибуты

Отсутствует.

Дочерние элементы

Элемент Описание
traceUrls Необязательный элемент.

Указывает URL-адрес, для которого требуется включить трассировку трассировки etW на основе запросов.

Образец конфигурации

Следующий пример включает трассировку для примера домашней страницы, которая поставляется с IIS 7 при размещении в файле Web.config в корне веб-сайта по умолчанию.

<configuration>
   <system.webServer>
      <httpTracing>
         <traceUrls>
            <add value="/iisstart.htm" />
         </traceUrls>
      </httpTracing>
   </system.webServer>
</configuration>

Пример кода

Приведенные ниже примеры позволяют выполнить трассировку для примера домашней страницы, которая поставляется с IIS 7 на веб-сайте Contoso, добавив запись в <traceUrls> коллекцию для этого сайта.

AppCmd.exe

appcmd.exe set config "Contoso" -section:system.webServer/httpTracing /+"traceUrls.[value='/iisstart.htm']" /commit:apphost

Примечание

При использовании AppCmd.exe для настройки этих параметров для параметра apphostфиксации необходимо задать значение . Это зафиксирует параметры конфигурации в соответствующем разделе расположения в файле ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection httpTracingSection = config.GetSection("system.webServer/httpTracing", "Contoso");
         ConfigurationElementCollection traceUrlsCollection = httpTracingSection.GetCollection("traceUrls");

         ConfigurationElement addElement = traceUrlsCollection.CreateElement("add");
         addElement["value"] = @"/iisstart.htm";
         traceUrlsCollection.Add(addElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim httpTracingSection As ConfigurationSection = config.GetSection("system.webServer/httpTracing", "Contoso")

      Dim traceUrlsCollection As ConfigurationElementCollection = httpTracingSection.GetCollection("traceUrls")
      Dim addElement As ConfigurationElement = traceUrlsCollection.CreateElement("add")
      addElement("value") = "/iisstart.htm"
      traceUrlsCollection.Add(addElement)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var httpTracingSection = adminManager.GetAdminSection("system.webServer/httpTracing", "MACHINE/WEBROOT/APPHOST/Contoso");

var traceUrlsCollection = httpTracingSection.ChildElements.Item("traceUrls").Collection;
var addElement = traceUrlsCollection.CreateNewElement("add");
addElement.Properties.Item("value").Value = "/iisstart.htm";
traceUrlsCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set httpTracingSection = adminManager.GetAdminSection("system.webServer/httpTracing", "MACHINE/WEBROOT/APPHOST/Contoso")

Set traceUrlsCollection = httpTracingSection.ChildElements.Item("traceUrls").Collection
Set addElement = traceUrlsCollection.CreateNewElement("add")
addElement.Properties.Item("value").Value = "/iisstart.htm"
traceUrlsCollection.AddElement addElement

adminManager.CommitChanges()