Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questo argomento viene descritto come visualizzare i log dei messaggi.
Visualizzazione dei log dei messaggi nel Visualizzatore di traccia del servizio
Un messaggio verrà trasformato durante l'elaborazione da WCF. Pertanto, un messaggio registrato riflette solo il contenuto del messaggio nel punto 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 dei messaggi restituisce sempre il messaggio decodificato. Se la registrazione dei messaggi è stata configurata correttamente, qualsiasi messaggio registrato deve essere in testo normale. Ad esempio, il formato (testo normale) dei messaggi registrati non è interessato dall'utilizzo di un codificatore di messaggi binari.
L'output di XmlWriterTraceListener è un file che contiene una sequenza di frammenti XML. Tenere presente che il file non è un file XML valido. Per visualizzare i file di log dei messaggi, è consigliabile usare lo strumento Visualizzatore traccia dei servizi (SvcTraceViewer.exe ). Per altre informazioni su come usare questo strumento, vedere Uso del Visualizzatore traccia del servizio per la visualizzazione di tracce correlate e risoluzione dei problemi.
Nel Visualizzatore traccia del servizio i messaggi sono elencati nella scheda Messaggio . I messaggi che hanno causato o sono correlati a un errore di elaborazione vengono evidenziati in giallo (livello di avviso) o rosso (livello di errore), a seconda della gravità dell'errore. Facendo doppio clic sul messaggio viene visualizzata la traccia del messaggio nel contesto della richiesta di elaborazione.
Annotazioni
Se un messaggio non ha intestazione, non viene registrato alcun <header/>
tag.
Visualizzazione dei messaggi registrati da un client, un relay e un servizio
L'ambiente potrebbe contenere un client, che invia un messaggio a un relay, il quale 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 contemporaneamente nello strumento Visualizzatore traccia dei servizi (SvcTraceViewer.exe), il rendering degli scambi di log dei messaggi verrà eseguito in modo non corretto. Ciò è dovuto al CorrelationId
e ActivityId
nell'intestazione del messaggio, che non sono univoci per ogni coppia di invio-ricezione.
Per risolvere il problema, è possibile utilizzare uno dei metodi seguenti.
Visualizzare solo due dei tre log dei messaggi nello strumento Visualizzatore traccia del servizio (SvcTraceViewer.exe) in qualsiasi momento.
Se è necessario visualizzare tutti e tre i log nello strumento Visualizzatore traccia dei servizi (SvcTraceViewer.exe) contemporaneamente, è possibile modificare il servizio di inoltro creando una nuova Message istanza. Questa istanza deve essere una copia del corpo del messaggio in arrivo, insieme a tutte le intestazioni ad eccezione delle intestazioni
ActivityId
eAction
. Il codice di esempio seguente illustra come eseguire questa operazione.
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);
}
Casi eccezionali di contenuto di registrazione dei messaggi inaccurato
Nelle condizioni seguenti, i messaggi registrati potrebbero non rappresentare esattamente il flusso di ottetti presente sulla rete.
Per BasicHttpBinding, le intestazioni della busta vengono registrate per i messaggi in ingresso nello spazio dei nomi /addressing/none.
Gli spazi vuoti possono non coincidere.
Per i messaggi in arrivo, gli elementi vuoti possono essere rappresentati in modo diverso. Ad esempio, <tag></tag> anziché <tag/>
Quando la registrazione delle Informazioni di Identificazione Personale (PII) conosciute è disabilitata per impostazione predefinita, impostare enableLoggingKnownPii="true".
La codifica è abilitata per la trasformazione in UTF-8.