Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los 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 la correlación directa de las trazas de error de la misma unidad de procesamiento, entre los puntos de conexión de la aplicación, p. ej., 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 atributo propagateActivity para el origen de seguimiento System.ServiceModel 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
El gAId de la actividad M se propaga a la actividad N si se cumplen todas las condiciones siguientes.
N se crea debido a M
N conoce el gAId de M
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 por los puntos de conexión, el receptor del mensaje emite trazas de inicio y detención con ese identificador de actividad (propagado). Por lo tanto, existe una traza de inicio y una de detención con el gAId de cada origen de seguimiento de traza. Si los puntos de conexión están en el mismo proceso y utilizan el mismo nombre de origen de seguimiento, se crean varios inicios y detenciones con el mismo gAId (mismo gAId, mismo origen de seguimiento, mismo proceso).
Sincronización
Para sincronizar los eventos a través de los puntos de conexión que se ejecutan en distintos equipos, CorrelationId se agrega al encabezado de 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.