Melihat Log Pesan
Topik ini menjelaskan bagaimana Anda dapat melihat log pesan.
Melihat Log Pesan di Service Trace Viewer
Pesan akan diubah saat diproses oleh WCF. Oleh karena itu, pesan yang dicatat hanya mencerminkan konten pesan pada saat dicatat, bukan konten pada kabel.
Karena output pengelogan pesan tidak memiliki hubungan dengan format transfer pesan, pengelogan pesan selalu menghasilkan pesan yang didekodekan. Jika Anda telah mengonfigurasi pengelogan pesan dengan benar, pesan yang dicatat harus dalam teks biasa. Misalnya, format (teks biasa) pesan yang dicatat tidak terpengaruh oleh penggunaan encoder pesan biner.
Output XmlWriterTraceListener adalah file yang berisi urutan fragmen XML. Anda harus menyadari bahwa file tersebut bukan file XML yang valid. Disarankan agar Anda menggunakan Service Trace Viewer Tool (SvcTraceViewer.exe) untuk melihat file log pesan. Untuk informasi selengkapnya tentang cara menggunakan alat ini, lihat Menggunakan Service Trace Viewer untuk Melihat Jejak dan Pemecahan Masalah yang Berkorelasi.
Di Service Trace Viewer, pesan tercantum di tab Pesan. Pesan yang telah menyebabkan, atau terkait dengan, kesalahan pemrosesan disorot dalam warna kuning (tingkat peringatan) atau merah (tingkat kesalahan), bergantung pada tingkat keparahan kesalahan. Mengeklik dua kali pada pesan memunculkan jejak pesan dalam konteks permintaan pemrosesan.
Catatan
Jika pesan tidak memiliki header, tidak ada tag <header/>
yang dicatat.
Melihat Pesan yang Dicatat oleh Klien, Relai, dan Layanan
Lingkungan Anda mungkin berisi klien, yang mengirim pesan ke relai, yang kemudian meneruskan pesan ke layanan. Ketika pengelogan pesan diaktifkan di ketiga lokasi, dan ketiga log pesan ditampilkan di Service Trace Viewer Tool (SvcTraceViewer.exe) secara bersamaan, pertukaran log pesan akan dirender dengan tidak benar. Ini karena CorrelationId
dan ActivityId
di header Pesan tidak unik untuk setiap pasangan kirim-terima.
Anda dapat menggunakan salah satu metode berikut untuk mengatasi masalah ini.
Hanya lihat dua dari tiga log pesan di Service Trace Viewer Tool (SvcTraceViewer.exe) kapan saja.
Jika Anda harus melihat ketiga log di Service Trace Viewer Tool (SvcTraceViewer.exe) secara bersamaan, Anda dapat memodifikasi layanan relai dengan membuat instans Message baru. Instans ini harus berupa salinan isi pesan masuk, ditambah semua header kecuali header
ActivityId
danAction
. Kode contoh berikut menunjukkan cara melakukannya.
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);
}
Kasus Luar Biasa untuk Konten Pengelogan Pesan yang Tidak Akurat
Dalam kondisi berikut, pesan yang dicatat mungkin bukan representasi yang tepat dari aliran oktet yang ada pada kabel.
Untuk BasicHttpBinding, header amplop dicatat untuk pesan masuk di namespace /addressing/none.
Spasi kosong bisa tidak cocok.
Untuk pesan masuk, elemen kosong dapat direpresentasikan secara berbeda. Misalnya, <tag></tag>, bukan <tag/>
Ketika pengelogan PII yang diketahui dinonaktifkan baik secara default atau pengaturan eksplisit enableLoggingKnownPii="true".
Pengodean diaktifkan untuk mengubah ke UTF-8.