使用AppFabric的调用上下文中的EventProvider ActivityId

时间:2012-03-24 02:10:57

标签: c# wcf appfabric

我正在使用EventProvider编写最终写入Appfabric的事件。它通常遵循指定here的EventProvider实现。

我在WCF服务中使用它。该服务异步调用其他方法,因此服务逻辑在多个线程上运行。据我所知,事件的E2EActivityId使用Trace.CorrelationManager.ActivityId,它存储在Thread的TLS中。 我在调用write事件之前尝试设置EventProvider.SetActivityId(ref ..)方法,但这不起作用。

所以我无法从单个WCF操作上下文中对所有事件进行分组。

有没有办法打电话?

1 个答案:

答案 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>