Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В примере EtwTracking показано, как включить отслеживание Windows Workflow Foundation (WF) в службе рабочих процессов и вывести события отслеживания в трассировке событий для Windows (ETW). Для эмиссии записей отслеживания рабочих процессов в ETW в примере используется компонент отслеживания ETW (EtwTrackingParticipant).
Рабочий процесс в примере получает запрос, назначает обратное значение входных данных входной переменной и возвращает обратно клиенту это обратное значение. При входных данных, равных 0, возникает необработанное исключение деления на ноль, которое приводит к прерыванию рабочего процесса. При включенном отслеживании запись об ошибке записывается в ETW, что может помочь в дальнейшем устранении ошибки. Участник отслеживания ETW настраивается с профилем отслеживания для подписки на записи отслеживания. Профиль отслеживания определяется в файле Web.config и предоставляется в качестве параметра конфигурации участнику отслеживания ETW (Event Tracing for Windows). Участник отслеживания ETW настраивается в файле Web.config службы рабочего процесса и применяется к службе как поведение службы. В этом примере вы просматриваете события отслеживания в журнале событий с помощью средства просмотра событий.
Сведения об отслеживании рабочих процессов
Windows Workflow Foundation предоставляет инфраструктуру отслеживания для отслеживания выполнения экземпляра рабочего процесса. Среда выполнения отслеживания создает экземпляр рабочего процесса для генерации событий, связанных с жизненным циклом рабочего процесса, событий из действий рабочего процесса и пользовательских событий. В следующей таблице приведены основные компоненты инфраструктуры отслеживания.
| Компонент | Описание |
|---|---|
| Отслеживание времени выполнения | Предоставляет инфраструктуру для выдачи записей отслеживания. |
| Отслеживание участников | Обращается к записям отслеживания. .NET Framework 4.6.1 поставляется с модулем отслеживания, который записывает записи отслеживания в виде событий ETW (Event Tracing for Windows). |
| Профиль отслеживания | Механизм фильтрации, позволяющий участнику процесса отслеживания подписаться на подмножество записей отслеживания, порождаемых экземпляром рабочего процесса. |
В следующей таблице приведены записи отслеживания, которые выдает среда выполнения рабочего процесса.
| Журнал отслеживания | Описание |
|---|---|
| Записи отслеживания экземпляра рабочего процесса. | Описывает жизненный цикл экземпляра рабочего процесса. Например, запись экземпляра создается при запуске или завершении рабочего процесса. |
| Записи отслеживания состояния активности. | Подробные сведения о выполнении действия. Эти записи указывают состояние действия рабочего процесса, например, когда действие запланировано или когда действие завершается или когда возникает ошибка. |
| Запись восстановления закладки. | Создается всякий раз, когда закладка в экземпляре рабочего процесса возобновляется. |
| Настраиваемые записи отслеживания. | Автор рабочего процесса может создавать пользовательские записи отслеживания и эмитировать их в рамках пользовательской активности. |
| ActivityScheduledRecord | Эта запись генерируется, когда одно действие запланировало другое действие. |
| FaultPropagationRecord | Эта запись создается при распространении ошибки из активности. |
| CancelRequestedRecord | Эта запись создается при отмене действия другим действием. |
Участник отслеживания подписывается на часть записей отслеживания, создаваемых с помощью профилей отслеживания. Профиль отслеживания содержит запросы отслеживания, позволяющие подписаться на определенный тип записи отслеживания. Профили отслеживания можно указать в коде или в конфигурации.
Использование этого примера
Откройте файл решения EtwTrackingParticipantSample.sln с помощью Visual Studio.
Для построения решения нажмите CTRL+SHIFT+B.
Чтобы запустить решение, нажмите клавишу F5.
По умолчанию служба прослушивает порт 53797 (
http://localhost:53797/SampleWorkflowService.xamlx).Откройте тестовый клиент WCF с помощью Проводника.
Тестовый клиент WCF (WcfTestClient.exe) находится в папке <>установки Visual Studio\Common7\IDE\.
Папка установки Visual Studio по умолчанию — C:\Program Files\Microsoft Visual Studio 10.0.
В тестовом клиенте WCF выберите "Добавить службу " в меню "Файл ".
Добавьте адрес конечной точки в поле ввода. Значение по умолчанию —
http://localhost:53797/SampleWorkflowService.xamlx.Откройте приложение средства просмотра событий.
Перед вызовом службы запустите средство просмотра событий из меню Пуск, выберите Выполнить и введите
eventvwr.exe. Убедитесь, что журнал событий отслеживает события отслеживания, испускаемые службой рабочих процессов.В представлении дерева средства просмотра событий перейдите к средству просмотра событий, приложениям и журналам служб и Корпорации Майкрософт. Щелкните правой кнопкой мыши Microsoft и выберите Просмотр, затем Показать журналы аналитики и отладки, чтобы включить журналы аналитики и отладки.
Убедитесь, что установлен флажок "Показать аналитические и отладочные журналы ".
В представлении дерева в средстве просмотра событий перейдите к Средство просмотра событий, Журналы приложений и служб, Microsoft, Windows, Application Server-Applications. Щелкните правой кнопкой мыши "Аналитика" и выберите "Включить журнал", чтобы включить журнал Аналитики .
Протестируйте службу с помощью тестового клиента WCF, дважды щелкнув
GetData.Откроется
GetDataметод. Запрос принимает один параметр и гарантирует, что значение равно 0, которое является значением по умолчанию.Щелкните , затем вызовите.
Наблюдайте за событиями, исходящими от рабочего процесса.
Переключитесь на Просмотр событий и перейдите к Программы и службы, Microsoft, Windows, Приложения сервера приложений. Щелкните " Аналитика " правой кнопкой мыши и выберите "Обновить".
События рабочего процесса отображаются в средстве просмотра событий. Обратите внимание, что отображаются события выполнения рабочего процесса, а одно из них — необработанное исключение, соответствующее ошибке в рабочем процессе. Кроме того, событие предупреждения создается из действия рабочего процесса, указывающее, что действие вызывает ошибку.
Повторите шаги 9 и 10 с вводом данных, отличных от 0, чтобы не возникла ошибка.
Профили отслеживания позволяют подписываться на события, излучаемые средой выполнения при изменении состояния экземпляра рабочего процесса. В зависимости от требований к мониторингу, можно создать профиль с грубой настройкой, который подписывается на небольшой набор изменений состояния высокого уровня в рабочем процессе. С другой стороны, можно создать очень точный профиль, выходные данные которого достаточно богаты, чтобы восстановить выполнение позже. В примере демонстрируются события, создаваемые средой выполнения рабочего процесса в ETW, с помощью HealthMonitoring Tracking Profile, который генерирует небольшой набор событий. Другой профиль, который генерирует больше событий отслеживания рабочих процессов, также предоставляется в Web.config и называется Troubleshooting Tracking Profile. При установке .NET Framework 4.6.1 профиль по умолчанию с пустым именем настраивается в файле Machine.config. Этот профиль используется для настройки поведения отслеживания ETW, когда имя профиля не указано или указано как пустое.
Профиль отслеживания состояния здоровья выдает записи экземпляра рабочего процесса и записи распространения ошибок активности. Этот профиль создается путем добавления следующего профиля отслеживания в файл конфигурации Web.config.
<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>
Профиль можно изменить, изменив конфигурацию EtwTrackingParticipant на следующую.
<behaviors>
<serviceBehaviors>
<behavior>
<etwTracking profileName="HealthMonitoring Tracking Profile"/>
</behavior>
</serviceBehaviors>
</behaviors>
Чтобы очистить (необязательно)
Откройте окно просмотра событий.
Перейдите к Просмотр событий, Приложения и службы, Microsoft, Windows, Сервер приложений-Приложения. Щелкните правой кнопкой мыши "Аналитика" и выберите "Отключить журнал".
Перейдите к Просмотр событий, Приложения и службы, Microsoft, Windows, Сервер приложений-Приложения. Щелкните " Аналитика " правой кнопкой мыши и выберите "Очистить журнал".
Выберите параметр Clear , чтобы очистить события.
Известная проблема
Замечание
В средстве просмотра событий существует известная проблема, из-за которой не удалось декодировать события ETW. Вы можете увидеть сообщение об ошибке, которое выглядит следующим образом.
Невозможно найти описание для идентификатора события <id> из источника Microsoft-Windows-Application Server-Applications. Компонент, вызывающий это событие, не установлен на локальном компьютере или установка повреждена. Вы можете установить или исправить компонент на локальном компьютере.
Если вы столкнулись с этой ошибкой, нажмите кнопку "Обновить" в области действий. Теперь событие должно правильно декодироваться.