Bagikan melalui


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.

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.

Lihat juga