Condividi tramite


Visualizzazione dei log dei messaggi

In questo argomento viene illustrato come visualizzare i log dei messaggi.

Visualizzazione dei log dei messaggi nel visualizzatore di tracce dei servizi

Un messaggio verrà trasformato dall'elaborazione di WCF. Di conseguenza, un messaggio registrato riflette solo il suo contenuto nel momento in cui è stato registrato, non il contenuto in transito.

Poichè l'output della registrazione dei messaggi non ha alcuna relazione con il formato di trasferimento del messaggio, la registrazione genera sempre il messaggio decodificato. Se la registrazione del messaggio è stata configurata correttamente, i messaggi registrati devono essere visualizzati in testo normale. Ad esempio, il formato (testo normale) dei messaggi registrati non è influenzato dall'utilizzo di un codificatore di messaggi binario.

L'output di XmlWriterTraceListener è un file che contiene una sequenza di frammenti XML. È necessario sapere che il file non è un file XML valido. Per visualizzare i file di log dei messaggi, è consigliabile usare lo strumento Service Trace Viewer (SvcTraceViewer.exe). Per altre informazioni su come usare questo strumento, vedere Uso di Service Trace Viewer per la visualizzazione di tracce correlate e risoluzione dei problemi.

Nel visualizzatore delle tracce dei servizi, i messaggi sono elencati nella scheda Messaggio. I messaggi che hanno causato, o che sono correlati a un errore dell'elaborazione sono evidenziati in giallo (livello di avviso) o rosso (livello dell'errore), a seconda della gravità dell'errore. Un doppio clic sul messaggio ne rivela la traccia nel contesto della richiesta di elaborazione.

Nota

Se un messaggio non ha intestazione, non viene registrato alcun tag <header/>.

Visualizzazione dei messaggi registrati da client, relay e servizio

L'ambiente può contenere un client che invia un messaggio a un relay che successivamente lo inoltra al servizio. Quando la registrazione dei messaggi è abilitata in tutte e tre le posizioni e tutti e tre i log dei messaggi vengono visualizzati in Strumento Service Trace Viewer (SvcTraceViewer.exe) simultaneamente, il rendering degli scambi di log dei messaggi non verrà eseguito correttamente. Questa situazione si verifica perché CorrelationId e ActivityId nell'intestazione del messaggio non sono univoci per ogni coppia invio-ricezione.

Per risolvere il problema, utilizzare uno dei metodi seguenti:

  • Visualizzare solo due dei tre log dei messaggi in Strumento Service Trace Viewer (SvcTraceViewer.exe) in qualsiasi momento.

  • Se è necessario visualizzare tutti e tre i log nello strumento Service Trace Viewer (SvcTraceViewer.exe) contemporaneamente, è possibile modificare il servizio di inoltro creando una nuova istanza di Message. Tale istanza deve essere una copia del corpo del messaggio in arrivo, più tutte le intestazioni tranne quelle per le intestazioni ActivityId e Action. Nell'esempio di codice seguente viene illustrato come procedere.

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);  
}  

Situazioni particolari di contenuto della registrazione del messaggio inaccurata

Nelle condizioni seguenti, i messaggi registrati potrebbero non rappresentare in modo esatto il flusso di ottetti in transito.

  • Per BasicHttpBinding, le intestazioni di envelope vengono registrate per i messaggi in arrivo nello spazio dei nomi /addressing/none.

  • Gli spazi vuoti possono non corrispondere.

  • Per i messaggi in arrivo, gli elementi vuoti possono essere rappresentati in modo diverso. Ad esempio, <tag></tag> anziché <tag/>

  • Quando la registrazione di PII note è disattivata per impostazione predefinita o esplicita, enableLoggingKnownPii="true".

  • È attivata la codifica per la trasformazione a UTF-8.

Vedi anche