Visualización de registros de mensajes
En este tema se explica cómo puede ver registros de mensajes.
Visualización de registros de mensajes en Service Trace Viewer
Un mensaje se transforman tal y como se procesaron en WCF. Por consiguiente, un mensaje que se está registrando refleja solo el contenido del mensaje en el punto en el que se registró, no el contenido en la conexión.
Dado que el resultado del registro de mensajes no está relacionado con el formato de transferencia del mensaje, el registro de mensajes siempre tiene como resultado el mensaje decodificado. Si se configura correctamente el registro de mensajes, cualquier mensaje registrado debe estar en texto sin formato. Por ejemplo, el formato (texto sin formato) de los mensajes registrados no se ve afectado por la utilización de un codificador de mensajes binarios.
El resultado de XmlWriterTraceListener es un archivo que contiene una secuencia de fragmentos XML. Debería saber que el archivo no es un archivo XML válido. Para visualizar los archivos de registro de mensajes, use la Herramienta del visor de seguimiento de servicio (SvcTraceViewer.exe). Para obtener más información sobre el uso de esta herramienta, consulte Uso del visor de seguimiento de servicios para ver seguimientos puestos en correlación y solución de problemas.
En la herramienta del visor de seguimiento de servicios, los mensajes se muestran en la pestaña Mensajes. Los mensajes que hayan producido o que estén relacionados con un error de procesamiento se resaltan en amarillo (nivel de advertencia) o rojo (nivel de error), en función de la gravedad del error. Al hacer doble clic en el mensaje se muestra el seguimiento del mensaje en el contexto de la solicitud de procesamiento.
Nota
Si un mensaje no tiene encabezado, no se registra ninguna etiqueta <header/>
.
Visualización de los mensajes registrados por un cliente, un relé y un servicio
Su entorno puede contener un cliente, que envía un mensaje a un relé, que seguidamente reenvía el mensaje al servicio. Si la característica de registro de mensajes se habilita en las tres ubicaciones y los tres registros de mensajes se visualizan simultáneamente en la Herramienta del visor de seguimiento de servicio (SvcTraceViewer.exe), los intercambios del registro de mensajes se representarán incorrectamente. Esto se debe a que CorrelationId
y ActivityId
en el encabezado del mensaje no son únicos para cada par de envío-recepción.
Para solucionar este problema puede usar uno de los métodos siguientes:
Visualice únicamente dos de los tres registros de mensajes a la vez en la Herramienta del visor de seguimiento de servicio (SvcTraceViewer.exe).
Si debe visualizar los tres registros en la Herramienta del visor de seguimiento de servicio (SvcTraceViewer.exe) al mismo tiempo, puede crear una nueva instancia de la clase Message para modificar el servicio del relé. Esta instancia debería ser una copia del cuerpo del mensaje entrante, más todos los encabezados salvo los encabezados
ActivityId
yAction
. En el ejemplo siguiente de código se muestra cómo hacer esto:
Message outgoingMessage = Message.CreateMessage(incomingMessage.Version, incomingMessage.Headers.Action, incomingMessage.GetReaderAtBodyContents());
for (int i = 0; i < incomingMessage.Headers.Count; i++)
{
if (incomingMessage.Headers[i].Name.Equals("ActivityId", StringComparison.InvariantCultureIgnoreCase) ||
incomingMessage.Headers[i].Name.Equals("Action", StringComparison.InvariantCultureIgnoreCase))
{
continue;
}
outgoingMessage.Headers.CopyHeaderFrom(incomingMessage, i);
}
Casos excepcionales de contenido del registro de mensajes inexacto
Bajo las condiciones siguientes, los mensajes que se están registrados puede que no sean la representación exacta de la presente secuencia de octeto en la conexión.
Para BasicHttpBinding, los encabezados de envoltura se registran para los mensajes entrantes en el espacio de nombres /direccionamiento/ninguno.
Es posible que los espacios en blanco no coincidan.
Para los mensajes entrantes, los elementos vacíos se pueden representar de manera diferente. Por ejemplo: <tag></tag> en lugar de <tag/>
Cuando el registro de PII conocido está deshabilitado de forma predeterminada o explícita estableciendo enableLoggingKnownPii="true".
La codificación se habilita para transformar a UTF-8.