Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
En este tema se describe la propagación de actividades en el modelo de seguimiento de Windows Communication Foundation (WCF).
Uso de propagación para correlacionar actividades entre puntos de conexión
La propagación proporciona al usuario una correlación directa de seguimientos de errores para la misma unidad de procesamiento entre puntos de conexión de aplicación, por ejemplo, una solicitud. Los errores emitidos en puntos de conexión diferentes para la misma unidad de procesamiento se agrupan en la misma actividad, incluso entre dominios de aplicación. Esto se realiza mediante la propagación del identificador de actividad en los encabezados del mensaje. Por lo tanto, si un cliente agota el tiempo de espera debido a un error interno en el servidor, ambos errores aparecen en la misma actividad para la correlación directa.
Para ello, use la ActivityTracing configuración como se muestra en el ejemplo anterior. Además, establezca el propagateActivity atributo para el origen de System.ServiceModel seguimiento en todos los puntos de conexión.
<source name="System.ServiceModel" switchValue="Verbose,ActivityTracing" propagateActivity="true" >
La propagación de actividad es una funcionalidad configurable que hace que WCF agregue un encabezado a los mensajes salientes, que incluye el identificador de actividad en TLS. Al incluir esto en seguimientos posteriores en el lado servidor, podemos correlacionar las actividades de cliente y servidor.
Definición de propagación
GAId de la actividad M se propaga a la actividad N si se aplican todas las condiciones siguientes.
N se crea debido a M
GAId de M es conocido por N
GAId de N es igual a gAId de M.
El gAId se propaga a través del encabezado del mensaje ActivityId, como se muestra en el siguiente esquema XML.
<xsd:element name="ActivityId" type="integer" minOccurs="0">
<xsd:attribute name="CorrelationId" type="integer" minOccurs="0"/>
</xsd:element>
A continuación se muestra un ejemplo del encabezado del mensaje.
<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>
Límites de propagación y actividad
Cuando el identificador de actividad se propaga entre puntos de conexión, el receptor de mensajes emite un identificador de actividad de inicio y detención con ese identificador de actividad (propagado). Por lo tanto, hay un seguimiento Start y Stop con ese gAId de cada origen de seguimiento. Si los puntos de conexión están en el mismo proceso y usan el mismo nombre de origen de seguimiento, se crean varias instancias de Start y Stop con el mismo lAId (mismo gAId, mismo origen de seguimiento, mismo proceso).
Sincronización
Para sincronizar eventos entre puntos de conexión que se ejecutan en diferentes máquinas, se agrega un CorrelationId al encabezado ActivityId que se propaga en los mensajes. Las herramientas pueden usar este identificador para sincronizar eventos entre máquinas con discrepancia de reloj. En concreto, la herramienta Visor de seguimiento de servicio usa este identificador para mostrar los flujos de mensajes entre puntos de conexión.