Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описывается распространение действий в модели трассировки Windows Communication Foundation (WCF).
Использование распространения для корреляции действий между конечными точками
Распространение предоставляет пользователю прямую корреляцию трассировок ошибок для одной единицы обработки между конечными точками приложения, например запросом. Ошибки, возникающие в различных точках завершения для той же единицы обработки, объединяются в одной активности, даже в разных доменах приложений. Это делается путем распространения идентификатора действия в заголовках сообщений. Таким образом, если время ожидания клиента истекло из-за внутренней ошибки на сервере, обе ошибки отображаются в одной активности для прямой корреляции.
Для этого используйте ActivityTracing параметр, как показано в предыдущем примере. Кроме того, задайте propagateActivity атрибут для источника трассировки во System.ServiceModel всех конечных точках.
<source name="System.ServiceModel" switchValue="Verbose,ActivityTracing" propagateActivity="true" >
Распространение действий — это настраиваемая возможность, которая приводит к добавлению заголовка в исходящие сообщения, включая идентификатор действия в TLS. Включив это в последующие трассировки на стороне сервера, мы можем сопоставить действия клиента и сервера.
Определение распространения
Идентификатор gAId действия M распространяется на действие N, если выполняются все приведенные ниже условия.
N создается из-за M
gAId М известен для N
gAId N равен gAId M.
GAId распространяется через заголовок сообщения ActivityId, как показано в следующей схеме XML.
<xsd:element name="ActivityId" type="integer" minOccurs="0">
<xsd:attribute name="CorrelationId" type="integer" minOccurs="0"/>
</xsd:element>
Ниже приведен пример заголовка сообщения.
<MessageLogTraceRecord>
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"
xmlns:a="http://www.w3.org/2005/08/addressing">
<s:Header>
<a:Action s:mustUnderstand="1">http://Microsoft.ServiceModel.Samples/ICalculator/Subtract
</a:Action>
<a:MessageID>urn:uuid:f0091eae-d339-4c7e-9408-ece34602f1ce
</a:MessageID>
<ActivityId CorrelationId="aaaa0000-bb11-2222-33cc-444444dddddd"
xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">
17f59a29-b435-4a15-bf7b-642ffc40eac8
</ActivityId>
<a:ReplyTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</a:ReplyTo>
<a:To s:mustUnderstand="1">net.tcp://localhost/servicemodelsamples/service</a:To>
</s:Header>
<s:Body>
<Subtract xmlns="http://Microsoft.ServiceModel.Samples">
<n1>145</n1>
<n2>76.54</n2>
</Subtract>
</s:Body>
</s:Envelope>
</MessageLogTraceRecord>
Границы распространения и действия
Когда идентификатор действия распространяется по конечным точкам, получатель сообщений регистрирует трассировки начала и окончания с этим идентификатором действия. Таким образом, существует трассировка запуска и остановки с этим gAId из каждого источника трассировки. Если конечные точки находятся в одном процессе и используют одно и то же имя источника трассировки, создается несколько начальных и стоповых значений с одинаковым lAId (один и тот же gAId, один и тот же источник трассировки).
Синхронизация
Чтобы синхронизировать события между конечными точками, работающими на разных компьютерах, в заголовок ActivityId, распространяемый в сообщениях, добавляется Идентификатор корреляции. Средства могут использовать этот идентификатор для синхронизации событий между компьютерами с несоответствием часов. В частности, средство просмотра трассировки службы использует этот идентификатор для отображения потоков сообщений между конечными точками.