2012-10-12 33 views
1

我們的商店有一個TraceListener,它通過web服務調用將事件發送到存儲庫。我們將它用於我們自己的TraceSources,但希望能夠將其用於其他TraceSources,如System.ServiceModel和System.Activities。TraceListener跟蹤WCF事件,但不是自己生成的事件

<source name="System.ServiceModel" switchValue="Warning, ActivityTracing"  propagateActivity="true"> 
    <listeners> 
    <add name="TheSharedListenerInQuestion" /> 
    </listeners> 
    </source> 

的問題是,我們使用WCF客戶端調用做的TraceListener內的寫入,如果System.ServiceModel tracesource連接到我的聽衆我在一個循環結束了,例如,追蹤其觸發的內部事件客戶端調用,這反過來使得WCF traceource觸發一個TraceEvent並且循環接着發生。

如何讓我的內部WCF調用不會導致WCF跟蹤資源觸發?

回答

0

我不認爲這在邏輯上是可能的。要使用跟蹤監聽器中的代碼跟蹤將必然會創建一個無限循環,但是,它說:

一個瘋狂的想法是編寫自定義TraceFilter檢查堆棧跟蹤以查看tracelistener是否爲原點或者是其他客戶。可能有另一個更聰明的解決方案,我將不得不在自定義跟蹤過濾器中設置一箇中斷點,並查看是否有關於上下文的任何內容是可區分的(可能通過過濾端點名稱)