Aracılığıyla paylaş


İleti Akışı İzlemeyi Yapılandırma

Windows Communication Foundation (WCF) etkinlik izleme etkinleştirildiğinde, WCF yığınının tamamında mantıksal etkinliklere Uçtan Uca Etkinlik Kimlikleri atanır. .NET Framework 4.6.1 sürümünde, bu özelliğin windows için Olay İzleme (ETW) ile çalışan ve ileti akışı izleme olarak adlandırılan daha yüksek performanslı bir sürümü vardır. Etkinleştirildiğinde, Uçtan Uca etkinlik kimlikleri gelen iletilerden alınır (veya boşsa atanır) ve ileti kanal tarafından kodunun çözülmesinden sonra yayılan tüm izleme olaylarına yayılır. Müşteriler, kod çözme sonrasında farklı hizmetlerden izleme günlükleriyle ileti akışlarını yeniden yapılandırmak için bu özelliği kullanabilir.

uygulamayla ilgili bir sorun algılandıktan sonra izleme etkinleştirilebilir ve ardından sorun çözüldükten sonra devre dışı bırakılabilir.

İzlemeyi Etkinleştirme

aşağıdaki örnekte gösterildiği gibi .NET Framework 4 messageFlowTracing yapılandırma öğesini olarak trueayarlayarak ileti akışı izlemeyi etkinleştirebilirsiniz.

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

Not

endToEndTracing Yapılandırma öğesi Web.config bir dosyada bulunduğundan, ETW ile aynı şekilde dinamik olarak yapılandırılamaz. Yapılandırma öğesinin endToEndTracing etkili olması için uygulamanın geri dönüştürülebilmesi gerekir.

Etkinlikler, etkinlik kimliği adı verilen bir tanımlayıcının değişimiyle ilişkilendirilir. Bu tanımlayıcı bir GUID'dir ve System.Diagnostics.CorrelationManager sınıfı tarafından oluşturulur. System.Diagnostics.Trace.CorrelationManager.ActivityID dosyasını işlerseniz, yürütme denetimi WCF koduna geri aktarıldığında değerin özgün olarak ayarlandığından emin olun. Ayrıca, zaman uyumsuz bir WCF programlama modeli kullanırsanız, System.Diagnostics.Trace.CorrelationManager.ActivityID dosyasının iş parçacıkları arasında aktarıldığına emin olun.

İleti Akışı İzleme ve REST Hizmetleri

İleti akışı izleme, bir isteği uçtan uca izlemenizi sağlar. SOAP tabanlı hizmetlerle, SOAP ileti üst bilgisinde bir Etkinlik Kimliği gönderilir. REST istekleri bu üst bilgiyi içermediğinden bunun yerine özel bir HTTP olay üst bilgisi kullanılır. Aşağıdaki kod parçacığı, Etkinlik Kimliği değerini program aracılığıyla nasıl alabileceğinizi gösterir:

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"];
   // ...
}

Aşağıdaki kodu kullanarak üst bilgiyi program aracılığıyla ekleyebilirsiniz:

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