请解释为什么它显示这样的失败消息。还有这个 CloudConfigurationManager 是如何工作的?
AFAIK,Microsoft.WindowsAzure.ConfigurationManager只是一个没有依赖关系的独立库。它描述如下:
Microsoft Azure 配置管理器提供了一个统一的 API 来加载配置设置,无论应用程序托管在何处 - 无论是在本地还是在云服务中。
CloudConfigurationManager.GetSetting
将从适当的配置存储中读取配置设置。如果您的应用程序作为 .NET Web 应用程序运行,该GetSetting
方法将从Web.config
orapp.config
文件中检索设置值。当应用程序在 Windows Azure 云服务或 Windows Azure 网站中运行时,GetSetting
会从ServiceConfiguration.cscfg
.
使用ILSpy,我们可以发现该GetSetting
方法首先检查ServiceRuntime提供程序并利用RoleEnvironment.GetConfigurationSettingValue(string configurationSettingName)获取设置值。如果值为null
,那么它将使用ConfigurationManager提供程序和杠杆作用ConfigurationManager.AppSettings['<settingName>'];
。
internal string GetSetting(string name, bool outputResultsToTrace)
{
string value = AzureApplicationSettings.GetValue("ServiceRuntime", name, new Func<string, string>(this.GetServiceRuntimeSetting), outputResultsToTrace);
if (value == null)
{
string arg_44_0 = "ConfigurationManager";
Func<string, string> arg_44_2;
if ((arg_44_2 = AzureApplicationSettings.<>c.<>9__10_0) == null)
{
arg_44_2 = (AzureApplicationSettings.<>c.<>9__10_0 = new Func<string, string>(AzureApplicationSettings.<>c.<>9.<GetSetting>b__10_0));
}
value = AzureApplicationSettings.GetValue(arg_44_0, name, arg_44_2, outputResultsToTrace);
}
return value;
}
由于您在app.config
文件中配置了设置,并且GetSetting
默认情况下该方法会将日志写入 Trace,因此您将看到您提供的跟踪日志。此外,您可以使用GetSetting('<settingName>',false)
禁用跟踪日志。