从azure 2.4升级到2.5现在诊断功能不起作用

use*_*410 2 configuration azure azure-diagnostics visual-studio-2013

我从azure工具2.4升级到2.5,当我尝试引用由DiagnosticMonitor.GetDefaultInitialConfiguration()例如返回的DiagnosticMonitorConfiguration时,我现在得到一个null引用

DiagnosticMonitorConfiguration diagnosticConfig = DiagnosticMonitor.GetDefaultInitialConfiguration();
diagnosticConfig.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(1);
Run Code Online (Sandbox Code Playgroud)

将抛出异常,因为目录为空.从我用Google搜索的内容来看,默认的初始配置存储在新的diagnostics.wadcfgx文件中,该文件就在那里,看起来像

<?xml version="1.0" encoding="utf-8"?>
  <DiagnosticsConfiguration xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
    <PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
<WadCfg>
  <DiagnosticMonitorConfiguration overallQuotaInMB="4096">
    <DiagnosticInfrastructureLogs />
    <Directories>
      <IISLogs containerName="wad-iis-logfiles" />
    </Directories>
    <PerformanceCounters>
      <PerformanceCounterConfiguration counterSpecifier="\Memory\Available MBytes" sampleRate="PT3M" />
      <PerformanceCounterConfiguration counterSpecifier="\Web Service(_Total)\ISAPI Extension Requests/sec" sampleRate="PT3M" />
      <PerformanceCounterConfiguration counterSpecifier="\Web Service(_Total)\Bytes Total/Sec" sampleRate="PT3M" />
      <PerformanceCounterConfiguration counterSpecifier="\ASP.NET Applications(__Total__)\Requests/Sec" sampleRate="PT3M" />
      <PerformanceCounterConfiguration counterSpecifier="\ASP.NET Applications(__Total__)\Errors Total/Sec" sampleRate="PT3M" />
      <PerformanceCounterConfiguration counterSpecifier="\ASP.NET\Requests Queued" sampleRate="PT3M" />
      <PerformanceCounterConfiguration counterSpecifier="\ASP.NET\Requests Rejected" sampleRate="PT3M" />
      <PerformanceCounterConfiguration counterSpecifier="\ASP.NET\Applications Running" sampleRate="PT0S" />
    </PerformanceCounters>
    <WindowsEventLog scheduledTransferPeriod="PT1M">
      <DataSource name="Application!*" />
    </WindowsEventLog>
    <Logs scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Error" />
  </DiagnosticMonitorConfiguration>
</WadCfg>
<StorageAccount>mystorageaccount</StorageAccount>
</PublicConfig>
<PrivateConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
<StorageAccount name="assetmanagerwms" endpoint="https://core.windows.net/" />
</PrivateConfig>
<IsEnabled>true</IsEnabled>
</DiagnosticsConfiguration>
Run Code Online (Sandbox Code Playgroud)

有人知道我错过了什么吗?返回的DiagnosticMonitorConfiguration上的所有属性都为null或0.

Gau*_*tri 11

这是SDK 2.5中的一个重大变化:http://msdn.microsoft.com/en-us/library/azure/dn873976.aspx#BKMK_breaking.基本上不再支持基于代码的诊断配置.从上面的链接:

诊断配置需要diagnostics.wadcfgx; 不再支持代码中的配置 - 使用Azure SDK版本2.5时,必须在XML配置文件diagnostics.wadcfgx中完成所有诊断配置,并且诊断代理始终使用此配置,无论是通过Visual Studio还是Azure PowerShell应用.必须将以前基于代码的任何诊断配置(例如,使用DiagnosticMonitor API)迁移到diagnostics.wadcfgx文件.用于在先前SDK中配置故障转储的代码也必须迁移到diagnostics.wadcfgx文件.

如果Azure SDK版本2.4项目已使用基于XML的诊断配置文件diagnostics.wascfg(建议的最佳实践),则在Visual Studio中将项目升级到目标Azure SDK版本2.5时,Visual Studio会自动更新XML配置文件到新格式(diagnostics.wadcfgx).如果您的项目继续使用基于代码的配置,那么当它升级到2.5版时,您将获得引用已弃用的API的构建警告.通过右键单击"解决方案资源管理器"中的角色,可以使用Visual Studio配置diagnostics.wadcfgx,然后单击"属性".在"配置"选项卡上,选择"启用诊断",然后单击"配置".有关详细信息,请参阅为Azure云服务和虚拟机配置诊断.