Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Im EtwTracking-Beispiel wird veranschaulicht, wie Sie die Nachverfolgung von Windows Workflow Foundation (WF) für einen Workflowdienst aktivieren und die Nachverfolgungsereignisse in der Ereignisablaufverfolgung für Windows (ETW) ausgeben. Zum Ausgeben von Workflownachverfolgungsdatensätzen in ETW verwendet das Beispiel den ETW-Tracking-Teilnehmer (EtwTrackingParticipant).
Der Workflow im Beispiel empfängt eine Anforderung, weist der Eingabevariable den Kehrwert der Eingabedaten zu und gibt den Reziprozien zurück an den Client. Wenn die Eingabedaten 0 sind, tritt eine Trennlinie durch Null auf, die nicht behandelt wird, wodurch der Workflow abgebrochen wird. Wenn die Nachverfolgung aktiviert ist, wird der Fehlertiteldatensatz an ETW ausgegeben, der später bei der Problembehandlung helfen kann. Der ETW-Überwachungsteilnehmer ist mit einem Überwachungsprofil konfiguriert, um Überwachungsdatensätze zu abonnieren. Das Tracking-Profil wird in der datei Web.config definiert und als Konfigurationsparameter für den ETW-Tracking-Teilnehmer bereitgestellt. Der ETW-Nachverfolgungsteilnehmer wird in der Web.config Datei des Workflowdiensts konfiguriert und auf den Dienst als Dienstverhalten angewendet. In diesem Beispiel zeigen Sie die Nachverfolgungsereignisse im Ereignisprotokoll mithilfe der Ereignisanzeige an.
Workflowverfolgungsdetails
Windows Workflow Foundation bietet eine Nachverfolgungsinfrastruktur zum Nachverfolgen der Ausführung einer Workflowinstanz. Die Nachverfolgungslaufzeit erstellt eine Workflowinstanz, um Ereignisse im Zusammenhang mit dem Workflowlebenszyklus, Ereignisse aus Workflowaktivitäten und benutzerdefinierten Ereignissen auszustrahlen. In der folgenden Tabelle sind die primären Komponenten der Tracking-Infrastruktur aufgeführt.
Komponente | BESCHREIBUNG |
---|---|
Überwachungslaufzeit | Stellt die Infrastruktur zum Erstellen von Tracking-Aufzeichnungen bereit. |
Nachverfolgen von Teilnehmern | Greift auf die Nachverfolgungsdatensätze zu. .NET Framework 4.6.1 wird mit einem Tracking-Teilnehmer ausgeliefert, der Tracking-Datensätze als Ereignisablaufverfolgungsereignisse für Windows (ETW)-Ereignisse schreibt. |
Überwachungsprofil | Ein Filtermechanismus, mit dem ein Nachverfolgungsteilnehmer eine Teilmenge der von einer Workflowinstanz ausgegebenen Tracking-Datensätze abonniert. |
In der folgenden Tabelle sind die Tracking-Datensätze aufgeführt, die von der Workflow-Runtime emittiert werden.
Überwachungsdatensatz | BESCHREIBUNG |
---|---|
Überwachungsdatensätze zur Workflowinstanz. | Beschreibt den Lebenszyklus der Workflowinstanz. Beispielsweise wird ein Instanzdatensatz ausgegeben, wenn der Workflow gestartet oder abgeschlossen wird. |
Aktivitätsstatusverfolgungsdatensätze. | Führen Einzelheiten zur Aktivitätsausführung auf. Diese Datensätze geben den Status einer Workflowaktivität an, z. B. wenn eine Aktivität geplant wird oder wenn die Aktivität abgeschlossen ist oder wenn ein Fehler ausgelöst wird. |
Datensatz zur Wiederaufnahme von Lesezeichen. | Wird ausgegeben, wenn eine Textmarke innerhalb einer Workflowinstanz wieder aufgenommen wird. |
Benutzerdefinierte Nachverfolgungsdatensätze. | Ein Workflowautor kann benutzerdefinierte Nachverfolgungsdatensätze erstellen und innerhalb der benutzerdefinierten Aktivität ausgeben. |
ActivityScheduledRecord | Dieser Datensatz wird ausgegeben, wenn eine Aktivität eine andere Aktivität plant. |
FaultPropagationRecord | Dieser Datensatz wird ausgegeben, wenn ein Fehler von einer Aktivität weitergegeben wird. |
CancelRequestedRecord | Dieser Datensatz wird ausgegeben, wenn eine Aktivität von einer anderen Aktivität abgebrochen wird. |
Der Nachverfolgungsteilnehmer abonniert eine Teilmenge der ausgegebenen Tracking-Datensätze mithilfe von Tracking-Profilen. Ein Nachverfolgungsprofil enthält Nachverfolgungsabfragen, die das Abonnieren eines bestimmten Tracking-Datensatztyps ermöglichen. Nachverfolgungsprofile können im Code oder in der Konfiguration angegeben werden.
So verwenden Sie dieses Beispiel
Öffnen Sie mit Visual Studio die EtwTrackingParticipantSample.sln Projektmappendatei.
Drücken Sie STRG+UMSCHALT+B, um die Solution zu erstellen.
Drücken Sie F5, um die Lösung auszuführen.
Standardmäßig überwacht der Dienst Port 53797 (
http://localhost:53797/SampleWorkflowService.xamlx
).Öffnen Sie den WCF-Testclient mithilfe des Datei-Explorers.
Der WCF-Testclient (WcfTestClient.exe) befindet sich im <Visual Studio-Installationsordner>\Common7\IDE\.
Der Standardinstallationsordner von Visual Studio lautet "C:\Programme\Microsoft Visual Studio 10.0".
Wählen Sie im WCF-Testclient im Menü "Datei" die Option "Dienst hinzufügen" aus.
Fügen Sie die Endpunktadresse im Eingabefeld hinzu. Der Standardwert lautet
http://localhost:53797/SampleWorkflowService.xamlx
.Öffnen Sie die Ereignisanzeigeanwendung.
Bevor Sie den Dienst aufrufen, starten Sie die Ereignisanzeige im Startmenü , wählen Sie "Ausführen" aus, und geben Sie folgendes ein
eventvwr.exe
. Stellen Sie sicher, dass das Ereignisprotokoll auf das Nachverfolgen von Ereignissen überwacht, die vom Workflowdienst ausgegeben werden.Navigieren Sie in der Strukturansicht der Ereignisanzeige zu Ereignisanzeige, Anwendungen und Dienstprotokollen und Microsoft. Klicken Sie mit der rechten Maustaste auf Microsoft , und wählen Sie "Anzeigen" und dann " Analyse- und Debugprotokolle" aus, um die Analyse- und Debugprotokolle zu aktivieren.
Stellen Sie sicher, dass die Option "Analyse- und Debugprotokolle anzeigen " aktiviert ist.
Navigieren Sie in der Strukturansicht in der Ereignisanzeige zu Ereignisanzeige, Anwendungen und Dienstprotokollen, Microsoft, Windows, Application Server-Applications. Klicken Sie mit der rechten Maustaste auf "Analyse ", und wählen Sie "Protokoll aktivieren " aus, um das Analyseprotokoll zu aktivieren.
Testen Sie den Dienst mithilfe des WCF-Testclients
GetData
, indem Sie auf "Doppelklicken" klicken.Dadurch wird die
GetData
Methode geöffnet. Die Anforderung akzeptiert einen Parameter und stellt sicher, dass der Wert 0 ist. Dies ist der Standardwert.Klicken Sie auf "Aufrufen".
Beobachten Sie die ereignisse, die aus dem Workflow ausgegeben werden.
Wechseln Sie zurück zur Ereignisanzeige, und navigieren Sie zu Ereignisanzeige, Anwendungen und Dienstprotokollen, Microsoft, Windows, Anwendungsserveranwendungen. Klicken Sie mit der rechten Maustaste auf "Analyse" , und wählen Sie "Aktualisieren" aus.
Die Workflowereignisse werden in der Ereignisanzeige angezeigt. Beachten Sie, dass Workflowausführungsereignisse angezeigt werden und dass einer davon eine unbehandelte Ausnahme ist, die dem Fehler im Workflow entspricht. Außerdem wird ein Warnereignis aus der Workflowaktivität ausgegeben, das angibt, dass die Aktivität einen Fehler auslöst.
Wiederholen Sie die Schritte 9 und 10 mit einer anderen Dateneingabe als 0, sodass kein Fehler ausgelöst wird.
Durch das Nachverfolgen von Profilen können Sie Ereignisse abonnieren, die von der Laufzeit ausgegeben werden, wenn sich der Status einer Workflowinstanz ändert. Je nach Ihren Überwachungsanforderungen können Sie ein Profil erstellen, das sehr grob ist und einen kleinen Satz von Zustandsänderungen auf hoher Ebene für einen Workflow abonniert. Andererseits können Sie ein sehr präzises Profil erstellen, dessen Ausgabe reich genug ist, um die Ausführung später zu rekonstruieren. Das Beispiel veranschaulicht die Ereignisse, die von der Workflowlaufzeit an ETW ausgegeben werden, mithilfe derer HealthMonitoring Tracking Profile
ein kleiner Satz von Ereignissen ausgegeben wird. Ein anderes Profil, das weitere Workflowverfolgungsereignisse ausgibt, wird auch in der benannten Web.config Troubleshooting Tracking Profile
bereitgestellt. Wenn .NET Framework 4.6.1 installiert ist, wird in der datei Machine.config ein Standardprofil mit einem leeren Namen konfiguriert. Dieses Profil wird von der ETW-Nachverfolgungsverhaltenskonfiguration verwendet, wenn kein Profilname oder ein leerer Profilname angegeben wird.
Das Überwachungsprofil der Integritätsüberwachung gibt Workflowinstanzdatensätze und Aktivitätsfehlerverteilungsdatensätze aus. Dieses Profil wird durch Hinzufügen des folgenden Nachverfolgungsprofils zu einer Web.config Konfigurationsdatei erstellt.
<tracking>
<profiles>
<trackingProfile name="HealthMonitoring Tracking Profile">
<workflow activityDefinitionId="*">
<workflowInstanceQueries>
<workflowInstanceQuery>
<states>
<state name="Started"/>
<state name="Completed"/>
<state name="Aborted"/>
<state name="UnhandledException"/>
</states>
</workflowInstanceQuery>
</workflowInstanceQueries>
<faultPropagationQueries>
<faultPropagationQuery faultSourceActivityName ="*" faultHandlerActivityName="*"/>
</faultPropagationQueries>
</workflow>
</trackingProfile>
</profiles>
</tracking>
Das Profil kann geändert werden, indem die EtwTrackingParticipant
Konfiguration wie folgt geändert wird.
<behaviors>
<serviceBehaviors>
<behavior>
<etwTracking profileName="HealthMonitoring Tracking Profile"/>
</behavior>
</serviceBehaviors>
</behaviors>
So führen Sie eine Bereinigung aus (optional)
Öffnen Sie die Ereignisanzeige.
Navigieren Sie zu Ereignisanzeige, Anwendungen und Dienstprotokollen, Microsoft, Windows, Anwendungsserveranwendungen. Klicken Sie mit der rechten Maustaste auf "Analyse" , und wählen Sie "Protokoll deaktivieren" aus.
Navigieren Sie zu Ereignisanzeige, Anwendungen und Dienstprotokollen, Microsoft, Windows, Anwendungsserveranwendungen. Klicken Sie mit der rechten Maustaste auf "Analyse" , und wählen Sie "Protokoll löschen" aus.
Wählen Sie die Option "Löschen " aus, um die Ereignisse zu löschen.
Bekanntes Problem
Hinweis
Es gibt ein bekanntes Problem in der Ereignisanzeige, bei dem ETW-Ereignisse möglicherweise nicht decodiert werden. Möglicherweise wird eine Fehlermeldung angezeigt, die wie folgt aussieht.
Die Beschreibung der Ereignis-ID <> aus der Quelle "Microsoft-Windows-Application Server-Applications" wurde nicht gefunden. Entweder ist die Komponente, die dieses Ereignis auslöst, auf Ihrem lokalen Computer nicht installiert, oder die Installation ist beschädigt. Sie können die Komponente auf dem lokalen Computer installieren oder reparieren.
Wenn dieser Fehler auftritt, klicken Sie im Aktionsbereich auf "Aktualisieren". Das Ereignis sollte jetzt ordnungsgemäß decodiert werden.