我从azure工具2.4升级到2.5,当我尝试引用DiagnosticMonitor.GetDefaultInitialConfiguration()
返回的DiagnosticMonitorConfiguration时,我现在得到一个空引用。例如
DiagnosticMonitorConfiguration diagnosticConfig = DiagnosticMonitor.GetDefaultInitialConfiguration();
diagnosticConfig.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(1);
将抛出异常,因为Directories为null。根据我的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>
有人知道我错过了什么吗?返回的DiagnosticMonitorConfiguration上的所有属性都为null或0。
答案 0 :(得分: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应用 电源外壳。 任何以前基于代码的诊断配置(for 例如,使用DiagnosticMonitor API)必须迁移到 diagnostics.wadcfgx文件。用于配置故障转储的代码 以前的SDK也必须迁移到diagnostics.wadcfgx文件。
如果您的Azure SDK版本2.4项目已使用基于XML的项目 诊断配置文件诊断.wascfg(建议最好 练习),然后在Visual Studio中将项目升级到 目标Azure SDK版本2.5,Visual Studio自动更新 XML配置文件为新格式(diagnostics.wadcfgx)。 如果 您的项目继续使用基于代码的配置,然后何时使用 升级到2.5版,您将获得引用的构建警告 已弃用的API 。您可以使用Visual Studio进行配置 在解决方案资源管理器中右键单击一个角色,并执行diagnostics.wadcfgx 然后单击属性。在Configuration选项卡上,选择Enable 单击“诊断”,然后单击“配置”。请参阅配置诊断 Azure云服务和虚拟机以获取更多信息。