Bagikan melalui


Mengonfigurasi Pelacakan Alur Pesan

Saat pelacakan aktivitas Windows Communication Foundation (WCF) diaktifkan, ID aktivitas ujung ke ujung ditetapkan ke aktivitas logis di seluruh tumpukan WCF. Di .NET Framework 4.6.1, sekarang ada versi performa yang lebih tinggi dari fitur ini yang bekerja dengan Pelacakan Peristiwa untuk Windows (ETW) yang disebut pelacakan alur pesan. Saat diaktifkan, ID aktivitas Ujung Ke Ujung diambil dari (atau ditetapkan jika kosong) pesan masuk dan disebarkan ke semua aktivitas penelusuran yang dikeluarkan setelah pesan didekodekan oleh saluran. Pelanggan dapat menggunakan fitur ini untuk merekonstruksi alur pesan dengan log jejak dari layanan yang berbeda setelah pengodean.

Pelacakan dapat diaktifkan setelah masalah terdeteksi dengan aplikasi dan kemudian dinonaktifkan setelah masalah diselesaikan.

Mengaktifkan Penelusuran

Anda dapat mengaktifkan pelacakan alur pesan dengan menyetel elemen konfigurasi .NET Framework 4 messageFlowTracing ke true, seperti yang ditunjukkan pada contoh berikut.

<system.servicemodel>  
  <diagnostics>  
    <endToEndTracing propagateActivity="true" messageFlowTracing="true" />  
  </diagnostics>  
</system.servicemodel>  

Catatan

Karena elemen konfigurasi endToEndTracing berada di file Web.config, elemen tersebut tidak dapat dikonfigurasi secara dinamis dengan cara yang sama seperti ETW. Agar elemen konfigurasi endToEndTracing berlaku, aplikasi harus didaur ulang.

Aktivitas dikorelasikan dengan pertukaran pengidentifikasi yang disebut ID aktivitas. Pengidentifikasi ini adalah GUID, dan dihasilkan oleh kelas System.Diagnostics.CorrelationManager. Jika Anda memanipulasi System.Diagnostics.Trace.CorrelationManager.ActivityID, pastikan bahwa nilai diatur ke asli saat kontrol eksekusi ditransfer kembali ke kode WCF. Selain itu, jika Anda menggunakan model pemrograman WCF asinkron, pastikan bahwa System.Diagnostics.Trace.CorrelationManager.ActivityID ditransfer di antara utas.

Pelacakan Alur Pesan dan Layanan REST

Pelacakan alur pesan memungkinkan Anda melacak permintaan dari ujung ke ujung. Dengan layanan berbasis SOAP, ID Aktivitas dikirim dalam header pesan SOAP. Permintaan REST tidak berisi header ini sehingga header peristiwa HTTP khusus digunakan sebagai gantinya. Cuplikan kode berikut menunjukkan bagaimana Anda dapat mengambil nilai ID Aktivitas secara terprogram:

Object output = null;
if (OperationContext.Current.IncomingMessageProperties.TryGetValue(HttpRequestMessageProperty.Name, out output))
{
   HttpRequestMessageProperty httpHeaders = output as HttpRequestMessageProperty;
   // Retrieve the Activity Id from the HTTP header    string e2eId = httpHeaders.Headers["E2EActivity"];
   // ...
}

Anda dapat menambahkan header secara terprogram menggunakan kode berikut:

HttpContent content = new StreamContent(contentStream);  
Guid correlation = Guid.NewGuid();  
content.Headers.Add("E2EActivity", Convert.ToBase64String(correlation.ToByteArray()));