HTTP Tracing <httpTracing>

Panoramica

L'elemento <httpTracing> consente di configurare la traccia eventi basata su richiesta selettiva per le richieste IIS in ingresso. <httpTracing> contiene un elemento che contiene una <traceUrls> raccolta di <add> elementi. Ogni <add> elemento definisce un URL univoco per abilitare la traccia.

Nota

Event Tracing for Windows (ETW) è una struttura di traccia ad alta velocità fornita dal sistema operativo. Usando un meccanismo di buffering e registrazione implementato nel kernel, ETW fornisce un meccanismo di traccia per gli eventi generati da applicazioni in modalità utente e driver di dispositivo in modalità kernel. Inoltre, ETW offre la possibilità di abilitare e disabilitare la registrazione in modo dinamico, semplificando l'esecuzione di traccia dettagliata negli ambienti di produzione senza richiedere riavvii o riavvii delle applicazioni. Il meccanismo di registrazione usa buffer per processore scritti su disco da un thread writer asincrono. Ciò consente alle applicazioni server su larga scala di scrivere eventi con un disturbo minimo.

Nota

Per abilitare ETW basato su richiesta IIS, installare TracingModule.

Per impostazione predefinita, IIS genera eventi ETW basati su richiesta per tutti gli URL tramite il provider IIS: WWW Server con GUID {3A2A4E84-4C21-4981-AE10-3FDA0D9B0F83} (le informazioni dettagliate sono disponibili nell'elemento <traceProviderDefinitions> ). Per abilitare il filtro URL per ETW specificato dalla raccolta nell'elemento <traceUrls><httpTracing> , il primo bit (minimo significativo) dei flag di traccia deve essere impostato come 1 quando si esegue una sessione ETW. Ad esempio, per abilitare gli eventi ETW basati su richiesta IIS SOLO per gli URL configurati nell'insieme <traceUrls> , impostare i flag di traccia su 0xFFFFFFFF per una sessione ETW con il provider IIS: WWW Server. Tali flag di traccia abilitano il filtro URL e tutte le aree di traccia. Per abilitare gli stessi eventi per tutti gli URL, impostare invece i flag di traccia su 0xFFFFFFE .

Nota

Il filtro URL definito nella raccolta nell'elemento <traceUrls><httpTracing> influisce solo su ETW basato su richiesta IIS e non ha alcun impatto sulla traccia delle richieste non riuscite.

Compatibilità

Versione Note
IIS 10.0 L'elemento <httpTracing> non è stato modificato in IIS 10.0.
IIS 8,5 L'elemento <httpTracing> non è stato modificato in IIS 8.5.
IIS 8,0 L'elemento <httpTracing> non è stato modificato in IIS 8.0.
IIS 7,5 L'elemento <httpTracing> non è stato modificato in IIS 7.5.
IIS 7.0 L'elemento <httpTracing> è stato introdotto in IIS 7.0.
IIS 6.0 N/D

Installazione

L'elemento <httpTracing> è incluso nell'installazione predefinita di IIS 7.

Procedure

Non esiste un'interfaccia utente per l'elemento <httpTracing> per IIS 7. Per esempi di come accedere all'elemento <httpTracing> a livello di codice, vedere la sezione Esempi di codice di questo documento.

Configurazione

È possibile configurare l'elemento <httpTracing> a livello di server nel file ApplicationHost.config o a livello di sito, applicazione o directory in un file di Web.config.

Attributi

Nessuno.

Elementi figlio

Elemento Descrizione
traceUrls Elemento facoltativo.

Specifica l'URL per il quale si vuole abilitare la traccia ETW basata su richiesta.

Esempio di configurazione

Nell'esempio seguente verrà abilitata la traccia per la home page di esempio fornita con IIS 7 quando viene inserito in un file Web.config nella radice del sito Web predefinito.

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

Codice di esempio

Negli esempi seguenti viene abilitata la traccia per la home page di esempio fornita con IIS 7 nel sito Web denominato Contoso aggiungendo una voce alla <traceUrls> raccolta per tale sito.

AppCmd.exe

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

Nota

È necessario assicurarsi di impostare il parametro commit su apphost quando si usa AppCmd.exe per configurare queste impostazioni. Questa operazione esegue il commit delle impostazioni di configurazione nella sezione percorso appropriata nel file di 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()