Поделиться через


Использование отслеживания для устранения неполадок приложений

Windows Workflow Foundation (WF) позволяет отслеживать сведения, связанные с рабочим процессом, чтобы получить сведения о выполнении приложения или службы Windows Workflow Foundation. Хосты Windows Workflow Foundation могут фиксировать события рабочего процесса во время выполнения экземпляра рабочего процесса. Если рабочий процесс создает ошибки или исключения, вы можете использовать сведения об отслеживании Windows Workflow Foundation для устранения неполадок с обработкой.

Устранение неполадок в WF с помощью отслеживания WF

Чтобы обнаружить ошибки в процессе обработки действия Windows Workflow Foundation, можно включить отслеживание, используя профиль отслеживания, который выполняет запрос для ActivityStateRecord со статусом Faulted. Соответствующий запрос указан в следующем коде.

<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>  

Когда экземпляр рабочего процесса обнаруживает необработанное исключение, объект WorkflowInstanceUnhandledExceptionRecord создается, если включено отслеживание Windows Workflow Foundation.

Эта запись отслеживания содержит сведения об ошибке в виде стека исключений. Он содержит сведения о источнике ошибки (например, действие), которое сбой и привело к необработанным исключениям. Чтобы подписаться на события сбоя из Windows Workflow Foundation, включите отслеживание, добавив участника отслеживания. Настройте этот участник с профилем отслеживания, который запрашивает ActivityStateQuery (state="Faulted"), FaultPropagationRecord и WorkflowInstanceQuery (state="UnhandledException").

Если отслеживание включено с помощью участника отслеживания ETW, события сбоя создаются в сеансе ETW. События можно просмотреть с помощью средства просмотра событий. Эту информацию можно найти в Средстве просмотра событий->Журналы приложений и служб->Microsoft->Windows->Application Server-Applications в аналитическом канале.

См. также