Wyświetlanie dzienników komunikatów
W tym temacie opisano sposób wyświetlania dzienników komunikatów.
Wyświetlanie dzienników komunikatów w podglądzie śledzenia usługi
Komunikat zostanie przekształcony w miarę przetwarzania przez usługę WCF. W związku z tym rejestrowany komunikat odzwierciedla tylko zawartość komunikatu w momencie jego zarejestrowania, a nie zawartość w sieci.
Ponieważ dane wyjściowe rejestrowania komunikatów nie mają relacji z formatem transferu komunikatu, rejestrowanie komunikatów zawsze generuje zdekodowany komunikat. Jeśli poprawnie skonfigurowano rejestrowanie komunikatów, każdy zarejestrowany komunikat powinien znajdować się w postaci zwykłego tekstu. Na przykład format (zwykły tekst) zarejestrowanych komunikatów nie ma wpływu na użycie kodera komunikatów binarnych.
Dane wyjściowe elementu XmlWriterTraceListener to plik zawierający sekwencję fragmentów XML. Należy pamiętać, że plik nie jest prawidłowym plikiem XML. Zaleca się użycie narzędzia podglądu śledzenia usługi (SvcTraceViewer.exe) do wyświetlania plików dziennika komunikatów. Aby uzyskać więcej informacji na temat korzystania z tego narzędzia, zobacz Używanie przeglądarki śledzenia usługi do wyświetlania skorelowanych śladów i rozwiązywania problemów.
W Podglądzie śledzenia usługi komunikaty są wyświetlane na karcie Komunikat . Komunikaty, które spowodowały lub są powiązane, błąd przetwarzania są wyróżnione w kolorze żółtym (poziomie ostrzeżenia) lub czerwonym (poziomie błędu), w zależności od ważności błędu. Dwukrotne kliknięcie komunikatu powoduje wyświetlenie śladu komunikatu w kontekście żądania przetwarzania.
Uwaga
Jeśli komunikat nie ma nagłówka, żaden tag nie <header/>
jest rejestrowany.
Wyświetlanie komunikatów zarejestrowanych przez klienta, przekaźnika i usługę
Środowisko może zawierać klienta, który wysyła komunikat do przekaźnika, który następnie przekazuje komunikat do usługi. Gdy rejestrowanie komunikatów jest włączone we wszystkich trzech lokalizacjach, a wszystkie trzy dzienniki komunikatów są wyświetlane w narzędziu Podgląd śledzenia usługi (SvcTraceViewer.exe) jednocześnie, wymiany dzienników komunikatów będą niepoprawnie renderowane. Jest to spowodowane tym, że element CorrelationId
i ActivityId
w nagłówku Komunikat nie jest unikatowy dla każdej pary send-receive.
Aby rozwiązać ten problem, możesz użyć jednej z następujących metod.
W dowolnym momencie wyświetl tylko dwa z trzech dzienników komunikatów w narzędziu Podgląd śledzenia usługi (SvcTraceViewer.exe).
Jeśli w tym samym czasie musisz wyświetlić wszystkie trzy dzienniki w narzędziu podglądu śledzenia usługi (SvcTraceViewer.exe), możesz zmodyfikować usługę przekazywania, tworząc nowe Message wystąpienie. To wystąpienie powinno być kopią treści komunikatu przychodzącego oraz wszystkimi nagłówkami z wyjątkiem
ActivityId
nagłówków iAction
. Poniższy przykładowy kod pokazuje, jak to zrobić.
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);
}
Wyjątkowe przypadki dotyczące niedokładnej zawartości rejestrowania komunikatów
W następujących warunkach rejestrowane komunikaty mogą nie być dokładną reprezentacją strumienia oktetu obecnego w przewodzie.
W przypadku warstwy BasicHttpBinding nagłówki kopert są rejestrowane dla komunikatów przychodzących w przestrzeni nazw /addressing/none.
Białe spacje mogą być niezgodne.
W przypadku komunikatów przychodzących puste elementy mogą być reprezentowane inaczej. Na przykład <tag></tag zamiast <tagu>/>
Jeśli znane rejestrowanie danych pii jest domyślnie wyłączone lub jawne ustawienie włączLoggingKnownPii="true".
Kodowanie jest włączone do przekształcania do formatu UTF-8.