将跟踪数据保存到发布后无法在Azure中工作但在Dev环境中工作的存储

时间:2014-10-14 07:08:09

标签: c# asp.net azure azure-storage azure-web-roles

这是我在WebRole OnStart方法中使用的代码:



var config = DiagnosticMonitor.GetDefaultInitialConfiguration();
                DiagnosticMonitorTraceListener tmp = new DiagnosticMonitorTraceListener();
                System.Diagnostics.Trace.Listeners.Add(tmp);
                //config.Logs.BufferQuotaInMB = 200;
                config.Logs.ScheduledTransferPeriod = TimeSpan.FromSeconds(30.0);
                DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", config);
                System.Diagnostics.Trace.Write("Test");




0这是我在web.config中的配置:



    <trace>
      <listeners>
        <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.3.0.0, Culture=neutral, PublicKeyToken=xxxx"
          name="AzureDiagnostics">
          <filter type="" />
        </add>
      </listeners>
    </trace>
&#13;
&#13;
&#13;

使用Above Code我可以在从我的本地环境执行的azure存储表上编写跟踪语句。但在发布后,跟踪语句不会写在azure存储表中。

1 个答案:

答案 0 :(得分:1)

这是因为您的OnStart方法在WaIISHost.exe中运行,而您的web.config正在配置w3wp.exe。这意味着您的OnStart代码没有定义跟踪侦听器。您可以搜索&Diagn; DiagnosticMonitorTraceListener OnStart&#39;并找到几个解决方案。一般来说,选项是:

  1. 将以下代码添加到OnStart:

    System.Diagnostics.Trace.Listeners.Add(new Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener());

  2. 除了web.config之外,还将<listeners>元素添加到app.config。