1

我们的商店有一个 TraceListener,它通过 web 服务调用将事件发送到存储库。我们将它用于我们自己的 TraceSource,但希望能够将其用于其他 TraceSource,例如 System.ServiceModel 和 System.Activities。

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

问题是我们使用 WCF 客户端调用在 TraceListener 中进行写入,如果 System.ServiceModel 跟踪源附加到我的侦听器,我最终会进入一个循环,例如跟踪触发内部客户端调用的事件,这反过来会导致WCF 跟踪源触发 TraceEvent 并随之发生循环。

如何使我的内部 WCF 调用不会导致 WCF 跟踪源触发?

4

1 回答 1

0

我认为这在逻辑上是不可能的。但是,在跟踪侦听器中使用跟踪下的代码必然会创建一个无限循环,也就是说:

一个疯狂的想法是编写一个自定义TraceFilter来检查堆栈跟踪以查看 tracelistener 是调用的来源还是其他客户端。可能还有另一个更聪明的解决方案,我必须在自定义跟踪过滤器中设置一个断点,并查看有关上下文的任何内容是否可区分(可能通过对端点名称进行过滤)

于 2012-10-12T22:50:49.163 回答