Partilhar via


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.

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.

Consulte também