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:
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>Wenn Sie bereit sind, die Protokolle anzuzeigen, beenden Sie die Sitzung.
> Logman stop myETWSessionKopieren 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.manaus dem Verzeichnis .NET Framework 4 inc:\Temp.Ändern Sie die Anbieter-ID in
Microsoft.Windows.ApplicationServer.Applications.manin52A3165D-4AD9-405C-B1E8-7D9A257EAC9F.
Ändern Sie im ManifestC:\Tempdie GUID:<provider name="Microsoft-Windows-Application Server-Applications" guid ="{c651f5f6-1c0d-492e-8ae1-b4efd7c9d503 }" ...../>Formatieren Sie die Ablaufverfolgungsdatei mit folgendem Befehl:
tracerpt -l <tracefile name>.etl -import Microsoft.Windows.ApplicationServer.Applications.man -of EVTXÖ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.