Anzeigen von ETW-Ablaufverfolgungen für den WCF-Dienst mithilfe einer nicht standardmäßigen ETW-Anbieter-ID

In diesem Artikel wird ein Problem beschrieben, bei dem Windows WCF-Dienst (Communication Foundation) eine nicht standardmäßige Ereignisablaufverfolgung für Windows (ETW)-Anbieter-ID verwendet, wenn Sie ETW-Ablaufverfolgungen anzeigen.

Ursprüngliche Produktversion:   Windows Communication Foundation
Ursprüngliche KB-Nummer:   2120508

Zusammenfassung

WCF 4.0 gibt Ablaufverfolgungen an ETW aus. Weitere Informationen finden Sie unter "Analyseablaufverfolgung mit ETW". Standardmäßig werden die ETW-Ablaufverfolgungen mithilfe der Standardanbieter-ID ({ C651F5F6-1C0D-492E-8AE1-B4EFD7C9D503 }) ausgegeben. Der .NET Framework 4 registriert ein ETW-Manifest für diese Anbieter-ID. Wenn ein Manifest registriert ist, können die ETW-Ereignisse decodiert und in der Windows Ereignisanzeige angezeigt werden.

WCF lässt zu, dass Ereignisse für eine nicht standardmäßige Anbieter-ID ausgegeben werden, indem die Anbieter-ID in der Konfiguration geändert wird. In diesem Fall sind die Ereignisse in der Ereignisanzeige nicht decodierbar, da ein Manifest nicht für diese Anbieter-ID registriert ist.

Weitere Informationen

WCF ermöglicht das Senden von Ereignissen für eine bestimmte Anbieter-ID, indem die Konfiguration wie folgt geändert wird:

<configuration>
    <system.serviceModel>
        <diagnostics etwProviderId="52A3165D-4AD9-405C-B1E8-7D9A257EAC9F" />
    </system.serviceModel>
</configuration>

Da das Manifest mit der Anbieter-ID 52A3165D-4AD9-405C-B1E8-7D9A257EAC9F nicht registriert ist, können die Ereignisse nicht decodierbar sein. Zum Lesen der Ereignisse gibt es zwei Optionen:

  • Option 1:

    1. Erstellen und starten Sie eine ETW-Sitzung, die auf Ereignisse mit der jeweiligen Anbieter-ID lauscht.

      > logman create trace myETWSession -o "C:\Temp\mylog.etl" -ets -p {52A3165D-4AD9-405C-B1E8-7D9A257EAC9F} -mode Append -ft 1
      > Logman start myETWSessionconfiguration>
      
    2. Wenn Sie bereit sind, die Protokolle anzuzeigen, beenden Sie die Sitzung.

      > Logman stop myETWSession
      
    3. Kopieren Sie die ETW-Manifestdatei aus .NET Framework 4-Verzeichnis in das Protokollverzeichnis, und ändern Sie die Anbieter-ID im Manifest. Kopieren Sie Microsoft.Windows.ApplicationServer.Applications.man aus dem Verzeichnis .NET Framework 4 in c:\Temp .

    4. Ändern Sie die Anbieter-ID in Microsoft.Windows.ApplicationServer.Applications.man in 52A3165D-4AD9-405C-B1E8-7D9A257EAC9F .
      Ändern Sie im Manifest C:\Temp die GUID:

      <provider name="Microsoft-Windows-Application Server-Applications"
                guid ="{c651f5f6-1c0d-492e-8ae1-b4efd7c9d503 }" ...../>
      
    5. Formatieren Sie die Ablaufverfolgungsdatei mit folgendem Befehl:

      tracerpt -l <tracefile name>.etl -import Microsoft.Windows.ApplicationServer.Applications.man -of EVTX
      
    6. Öffnen Sie die generierte evtx-Datei in der Ereignisanzeige.

  • Option 2:

    Registrieren sie das ETW-Manifest mit der nicht standardmäßigen Anbieter-ID, wie unter "Konfigurieren der Nachverfolgung für einen Workflow" im Abschnitt "Registrieren einer anwendungsspezifischen Anbieter-ID" beschrieben.