我正在使用EventProvider编写最终写入Appfabric的事件。它通常遵循指定here的EventProvider实现。
我在WCF服务中使用它。该服务异步调用其他方法,因此服务逻辑在多个线程上运行。据我所知,事件的E2EActivityId使用Trace.CorrelationManager.ActivityId,它存储在Thread的TLS中。 我在调用write事件之前尝试设置EventProvider.SetActivityId(ref ..)方法,但这不起作用。
所以我无法从单个WCF操作上下文中对所有事件进行分组。
有没有办法打电话?
答案 0 :(得分:0)
我有同样的问题。我通过在元素 endToEndTracing 中添加名为 activityTracing =“true”的新属性来解决这个问题。我在Windows Server 2012上使用AppFabric 1.1 .net 4.5。
长话短说我在这里发布我的配置
<!-- AppFabric Config -->
<system.serviceModel>
<diagnostics etwProviderId="830b12d1-bb5b-4887-aa3f-ab508fd4c8ba">
<endToEndTracing propagateActivity="true" activityTracing="true" messageFlowTracing="true" />
</diagnostics>
<behaviors>
<serviceBehaviors>
<behavior name="">
<etwTracking profileName="EndToEndMonitoring Tracking Profile" />
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
<microsoft.applicationServer>
<monitoring>
<default enabled="true" connectionStringName="ApplicationServerMonitoringConnectionString" monitoringLevel="EndToEndMonitoring" />
</monitoring>
</microsoft.applicationServer>