Visualizando logs de mensagens
Este tópico descreve como você pode exibir logs de mensagens.
Exibindo logs de mensagens no Visualizador de Rastreamento de Serviço
Uma mensagem será transformada à medida que for processada pelo WCF. Portanto, uma mensagem que está sendo registrada reflete apenas o conteúdo da mensagem no ponto em que foi registrada, não o conteúdo no fio.
Como a saída do log de mensagens não tem relação com o formato de transferência da mensagem, o log de mensagens sempre gera a mensagem decodificada. Se você configurou o registro de mensagens corretamente, qualquer mensagem registrada deve estar em texto sem formatação. Por exemplo, o formato (texto sem formatação) das mensagens registradas não é afetado pelo uso de um codificador de mensagens binárias.
A saída do XmlWriterTraceListener é um arquivo que contém uma sequência de fragmentos XML. Você deve estar ciente de que o arquivo não é um arquivo XML válido. É recomendável usar a ferramenta Service Trace Viewer Tool (SvcTraceViewer.exe) para exibir os arquivos de log de mensagens. Para obter mais informações sobre como usar essa ferramenta, consulte Usando o Service Trace Viewer para exibir rastreamentos correlacionados e solução de problemas.
No Visualizador de Rastreamento de Serviço, as mensagens são listadas na guia Mensagem . As mensagens que causaram ou estão relacionadas a um erro de processamento são destacadas em amarelo (nível de aviso) ou vermelho (nível de erro), dependendo da gravidade do erro. Clicar duas vezes na mensagem exibe o rastreamento de mensagem no contexto da solicitação de processamento.
Nota
Se uma mensagem não tiver cabeçalho, nenhuma <header/>
tag será registrada.
Exibindo mensagens registradas por um cliente, uma retransmissão e um serviço
Seu ambiente pode conter um cliente, que envia uma mensagem para um retransmissor, que posteriormente encaminha a mensagem para o serviço. Quando o log de mensagens está habilitado em todos os três locais e todos os três logs de mensagens são exibidos na ferramenta Visualizador de Rastreamento de Serviço (SvcTraceViewer.exe) simultaneamente, as trocas de log de mensagens serão renderizadas incorretamente. Isso ocorre porque o CorrelationId
e ActivityId
no cabeçalho da mensagem não são exclusivos para cada par de envio-recebimento.
Você pode usar um dos seguintes métodos para resolver esse problema.
Exiba apenas dois dos três logs de mensagens na ferramenta Visualizador de Rastreamento de Serviço (SvcTraceViewer.exe) a qualquer momento.
Se você precisar exibir todos os três logs na Service Trace Viewer Tool (SvcTraceViewer.exe) ao mesmo tempo, poderá modificar o serviço de retransmissão criando uma nova Message instância. Esta instância deve ser uma cópia do corpo da mensagem de entrada, além de todos os cabeçalhos, exceto os
ActivityId
cabeçalhos eAction
. O código de exemplo a seguir demonstra como fazer isso.
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 excecionais de conteúdo de registro de mensagens impreciso
Sob as seguintes condições, as mensagens que estão sendo registradas podem não ser a representação exata do fluxo de octeto presente no fio.
Para BasicHttpBinding, cabeçalhos de envelope são registrados para as mensagens de entrada no namespace /addressing/none.
Os espaços em branco podem ser incompatíveis.
Para mensagens recebidas, os elementos vazios podem ser representados de forma diferente. Por exemplo, <tag></tag> em vez de <tag/>
Quando o registro de PII conhecido é desabilitado por padrão ou configuração explícita enableLoggingKnownPii="true".
A codificação está habilitada para transformação em UTF-8.