Anzeigen von Nachrichtenprotokollen
In diesem Thema wird beschrieben, wie Sie Nachrichtenprotokolle anzeigen können.
Anzeigen von Nachrichtenprotokollen im Service Trace Viewer
Eine Nachricht wird während ihrer Verarbeitung von WCF umgewandelt. Deshalb spiegelt eine Nachricht, die protokolliert wird, lediglich den Nachrichteninhalt am Protokollierungspunkt wider, nicht den Inhalt der Verbindung.
Da die Ausgabe der Nachrichtenprotokollierung völlig unabhängig vom Übertragungsformat der Nachricht ist, gibt die Nachrichtenprotokollierung stets die decodierte Nachricht aus. Wenn Sie die Nachrichtenprotokollierung ordnungsgemäß konfiguriert haben, sollte jede protokollierte Nachricht als Klartext vorliegen. Beispielsweise wird das Format (Klartext) der protokollierten Nachrichten nicht durch die Verwendung eines binären Nachrichtenencoders beeinflusst.
Die Ausgabe von XmlWriterTraceListener ist eine Datei, die eine Sequenz von XML-Fragmenten enthält. Sie sollten beachten, dass die Datei keine gültige XML-Datei ist. Es wird empfohlen, dass Sie das Service Trace Viewer-Tool (SvcTraceViewer.exe) verwenden, um die Nachrichtenprotokolldateien anzuzeigen. Weitere Informationen zur Verwendung dieses Tools finden Sie unter Verwenden von Service Trace Viewer zum Anzeigen korrelierender Ablaufverfolgungen und der Problembehandlung.
Im Service Trace Viewer werden Nachrichten auf der Registerkarte Nachricht aufgelistet. Nachrichten, die einen Verarbeitungsfehler verursacht haben, werden je nach Schweregrad des Fehlers gelb (Warnstufe) oder rot (Fehlerstufe) dargestellt. Wenn Sie auf die Nachricht doppelklicken, wird die Nachrichtenablaufverfolgung im Kontext der Verarbeitungsanforderung aufgerufen.
Hinweis: |
---|
Wenn eine Nachricht keinen Header aufweist, wird kein <header/>-Tag protokolliert. |
Anzeigen von Nachrichten, die von einem Client, einem Relay und einem Dienst protokolliert werden
Ihre Umgebung kann einen Client enthalten, der eine Nachricht an ein Relay sendet, das die Nachricht wiederum an den Dienst weiterleitet. Wenn die Nachrichtenprotokollierung an allen drei Orten aktiviert wird und alle drei Nachrichtenprotokolle im Service Trace Viewer-Tool (SvcTraceViewer.exe) gleichzeitig angezeigt werden, wird der Austausch der Nachrichtenprotokolle falsch wiedergegeben. Dies ist darauf zurückzuführen, dass CorrelationId und ActivityId im Nachrichtenheader nicht für jedes Absender-Empfängerpaar eindeutig sind.
Sie können eine der folgenden Methoden verwenden, um dieses Problem zu lösen.
Zeigen Sie jeweils nur zwei der drei Nachrichtenprotokolle im Service Trace Viewer-Tool (SvcTraceViewer.exe) an.
Falls alle drei Protokolle gleichzeitig im Service Trace Viewer-Tool (SvcTraceViewer.exe) angezeigt werden sollen, können Sie den Relaydienst ändern, indem Sie eine neue Message-Instanz erstellen. Bei dieser Instanz sollte es sich um eine Kopie des Textes der eingehenden Nachricht handeln und zusätzlich um alle Header mit Ausnahme des ActivityId-Headers und des Action-Headers. Der folgende Beispielcode veranschaulicht, wie Sie dabei vorgehen:
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);
}
Ausnahmefälle für ungenauen Nachrichtenprotokollierungsinhalt
Unter den folgenden Bedingungen entsprechen die protokollierten Nachrichten eventuell nicht genau der Darstellung des in der Verbindung vorhandenen octet-Streams.
Für BasicHttpBinding werden Umschlagheader für die eingehenden Nachrichten im /adressing/non-Namespace protokolliert.
Leerräume können unpassend gepaart werden.
Für eingehende Nachrichten können leere Elemente unterschiedlich dargestellt werden. Zum Beispiel <tag><>/tag< statt >tag/
Wenn die bekannte PII-Protokollierung deaktiviert ist, indem standardmäßig oder ausdrücklich enableLoggingKnownPii auf "true" festgelegt wird.
Die Codierung wird für die Umwandlung in UTF-8 aktiviert.
Siehe auch
Konzepte
Service Trace Viewer-Tool (SvcTraceViewer.exe)
Verwenden von Service Trace Viewer zum Anzeigen korrelierender Ablaufverfolgungen und der Problembehandlung