1

私たちのショップには、Web サービス呼び出しを介してリポジトリにイベントを送信する TraceListener があります。独自の TraceSource に使用しますが、System.ServiceModel や System.Activities などの他の TraceSource にも使用できるようにしたいと考えています。

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

問題は、WCF クライアント呼び出しを使用して TraceListener 内で書き込みを行うことです。System.ServiceModel tracesource がリスナーにアタッチされている場合、ループに陥ります。たとえば、内部クライアント呼び出しを起動するイベントをトレースします。 WCF tracesource が TraceEvent を起動し、ループが発生します。

内部 WCF 呼び出しで WCF トレースソースが起動しないようにするにはどうすればよいですか?

4

1 に答える 1

0

論理的にありえないと思います。ただし、トレース リスナーで code-under-trace を使用すると、必然的に無限ループが作成されます。

クレイジーなアイデアの 1 つは、スタック トレースを調べて、tracelistener が呼び出し元であるか、それとも他のクライアントであるかを確認するカスタムTraceFilterを作成することです。別のより賢い解決策があるかもしれません.カスタムトレースフィルター内にブレークポイントを設定し、コンテキストに関する何かが区別可能かどうかを確認する必要があります(おそらくエンドポイント名でフィルタリングすることによって)

于 2012-10-12T22:50:49.163 に答える