使用跟踪对应用程序进行故障排除

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")FaultPropagationRecordWorkflowInstanceQuery (state="UnhandledException") 的跟踪配置文件配置此参与者。

如果使用 ETW 跟踪参与者启用跟踪,则会向 ETW 会话发出错误事件。 可以使用事件查看器事件查看器查看事件。 这可以在分析通道中的节点事件查看器->应用程序和服务日志->Microsoft->Windows->应用服务器-应用程序下找到。

另请参阅