Windows Workflow Foundation (WF) 使你能够跟踪工作流相关信息,以提供有关 Windows Workflow Foundation 应用程序或服务执行的详细信息。 Windows Workflow Foundation 主机能够在工作流实例执行期间捕获工作流事件。 如果工作流生成错误或异常,则可以使用 Windows Workflow Foundation 跟踪详细信息来排查其处理问题。
使用 WF 跟踪对 WF 进行故障诊断
若要检测 Windows Workflow Foundation 活动处理过程中的错误,可以使用一个跟踪配置文件查询状态为“Faulted”的 ActivityStateRecord,从而启用跟踪。 以下代码中指定了相应的查询。
<activityStateQueries>
<activityStateQuery activityName="*">
<states>
<state name="Faulted" />
</states>
</activityStateQuery>
</activityStateQueries>
如果错误在错误处理程序(如TryCatch活动)中被传播和处理,则可以使用FaultPropagationRecord进行检测。 FaultPropagationRecord 指示故障的故障源活动及故障处理程序的名称。 对于错误,FaultPropagationRecord 包含异常堆栈形式的错误详细信息。 下面的示例中演示了订阅 FaultPropagationRecord 的查询。
<faultPropagationQueries>
<faultPropagationQuery faultSourceActivityName ="*" faultHandlerActivityName="*"/>
</faultPropagationQueries>
如果未在工作流中处理错误,则会导致工作流实例发生未经处理的异常,并且工作流实例已中止。 若要了解未经处理的异常的详细信息,跟踪配置文件必须使用以下示例中指定的方式查询工作流实例记录 state name="UnhandledException"
。
<workflowInstanceQueries>
<workflowInstanceQuery>
<states>
<state name="UnhandledException" />
</states>
</workflowInstanceQuery>
</workflowInstanceQueries>
当工作流实例遇到未经处理的异常时,如果已启用 Windows Workflow Foundation 跟踪,则会发出对象 WorkflowInstanceUnhandledExceptionRecord 。
此跟踪记录包含异常堆栈形式的错误详细信息。 它包含错误源(例如活动)的详细信息,该源出错并导致未经处理的异常。若要从 Windows Workflow Foundation 订阅故障事件,请通过添加跟踪参与者来启用跟踪。 通过查询 ActivityStateQuery (state="Faulted")
、FaultPropagationRecord 和 WorkflowInstanceQuery (state="UnhandledException")
的跟踪配置文件配置此参与者。
如果使用 ETW 跟踪参与者启用跟踪,则会向 ETW 会话发出错误事件。 可以使用事件查看器事件查看器查看事件。 这可以在分析通道中的节点事件查看器->应用程序和服务日志->Microsoft->Windows->应用服务器-应用程序下找到。