Visa meddelandeloggar
I det här avsnittet beskrivs hur du kan visa meddelandeloggar.
Visa meddelandeloggar i visningsprogrammet för tjänstspårning
Ett meddelande transformeras när det bearbetas av WCF. Därför återspeglar ett meddelande som loggas endast meddelandets innehåll när det loggades, inte innehållet på tråden.
Eftersom utdata från meddelandeloggning inte har någon relation till meddelandets överföringsformat matar meddelandeloggningen alltid ut det avkodade meddelandet. Om du har konfigurerat meddelandeloggning korrekt bör alla loggade meddelanden vara i oformaterad text. Till exempel påverkas inte formatet (oformaterad text) för de loggade meddelandena av användningen av en binär meddelandekodare.
Utdata från XmlWriterTraceListener är en fil som innehåller en sekvens med XML-fragment. Du bör vara medveten om att filen inte är en giltig XML-fil. Vi rekommenderar att du använder verktyget Tjänstspårningsvisare (SvcTraceViewer.exe) för att visa meddelandeloggfilerna. Mer information om hur du använder det här verktyget finns i Använda tjänstspårningsvisaren för att visa korrelerade spårningar och felsökning.
I tjänstspårningsvisaren visas meddelanden på fliken Meddelande . Meddelanden som har orsakat eller är relaterade till ett bearbetningsfel markeras i gult (varningsnivå) eller rött (felnivå), beroende på felets allvarlighetsgrad. Om du dubbelklickar på meddelandet visas meddelandespårningen i kontexten för bearbetningsbegäran.
Kommentar
Om ett meddelande inte har något huvud loggas ingen <header/>
tagg.
Visa meddelanden som loggas av en klient, ett relä och en tjänst
Din miljö kan innehålla en klient som skickar ett meddelande till ett relä som därefter vidarebefordrar meddelandet till tjänsten. När meddelandeloggning är aktiverat på alla tre platserna och alla tre meddelandeloggarna visas i Verktyget för tjänstspårningsvisare (SvcTraceViewer.exe) samtidigt återges meddelandeloggutbytena felaktigt. Det beror på att CorrelationId
och ActivityId
i meddelanderubriken inte är unika för varje send-receive-par.
Du kan använda någon av följande metoder för att lösa problemet.
Visa bara två av de tre meddelandeloggarna i verktyget För tjänstspårningsvisare (SvcTraceViewer.exe) när som helst.
Om du måste visa alla tre loggarna i tjänstspårningsverktyget (SvcTraceViewer.exe) samtidigt kan du ändra relätjänsten genom att skapa en ny Message instans. Den här instansen bör vara en kopia av brödtexten i det inkommande meddelandet, plus alla rubriker förutom rubrikerna
ActivityId
ochAction
. Följande exempelkod visar hur du gör detta.
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);
}
Undantagsfall för felaktigt meddelandeloggningsinnehåll
Under följande förhållanden kanske meddelanden som loggas inte är den exakta representationen av oktettströmmen som finns på kabeln.
För BasicHttpBinding loggas kuvertrubriker för inkommande meddelanden i namnområdet /addressing/none.
Blanksteg kan vara felmatchade.
För inkommande meddelanden kan tomma element representeras på olika sätt. Till exempel tagga><</tagga> i stället <för tagg/>
När känd PII-loggning inaktiveras antingen som standard eller explicit inställning aktiverar duLoggingKnownPii="true".
Kodning är aktiverat för transformering till UTF-8.