CloudConfigurationManager.GetSetting("") 是如何工作的?
How CloudConfigurationManager.GetSetting("") actually works?
我正在使用 CloudConfigurationManager 获取我的连接字符串。
我创建了一个 *Azure Service Fabric 应用程序.
storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
它工作正常,但我也可以看到:
正在从 ServiceRuntime 获取 "StorageConnectionString":失败。
请解释为什么显示这样的 FAIL 消息。另外这个 CloudConfigurationManager 是如何工作的?
注意:不要标记任何变通方法,因为我已经看到了所有变通方法。
这是我已经访问过但不满意的链接。
Link-1 和
Link-2
Kindly explain why is it showing such FAIL message. Also how is this CloudConfigurationManager works?
AFAIK,Microsoft.WindowsAzure.ConfigurationManager 只是一个没有依赖项的独立库。并且描述如下:
Microsoft Azure Configuration Manager provides a unified API to load configuration settings regardless of where the application is hosted - whether on-premises or in a Cloud Service.
CloudConfigurationManager.GetSetting
将从适当的配置存储中读取配置设置。如果您的应用程序 运行 作为 .NET Web 应用程序,GetSetting
方法将从 Web.config
或 app.config
文件中检索设置值。当应用程序在 Windows Azure 云服务或 Windows Azure 网站中 运行 时,GetSetting
将从 ServiceConfiguration.cscfg
检索设置值。
使用ILSpy, we could find the GetSetting
method would check the ServiceRuntime provider firstly and leverage 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)
来禁用跟踪日志。
我正在使用 CloudConfigurationManager 获取我的连接字符串。 我创建了一个 *Azure Service Fabric 应用程序.
storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
它工作正常,但我也可以看到:
正在从 ServiceRuntime 获取 "StorageConnectionString":失败。
请解释为什么显示这样的 FAIL 消息。另外这个 CloudConfigurationManager 是如何工作的?
注意:不要标记任何变通方法,因为我已经看到了所有变通方法。 这是我已经访问过但不满意的链接。
Link-1 和 Link-2
Kindly explain why is it showing such FAIL message. Also how is this CloudConfigurationManager works?
AFAIK,Microsoft.WindowsAzure.ConfigurationManager 只是一个没有依赖项的独立库。并且描述如下:
Microsoft Azure Configuration Manager provides a unified API to load configuration settings regardless of where the application is hosted - whether on-premises or in a Cloud Service.
CloudConfigurationManager.GetSetting
将从适当的配置存储中读取配置设置。如果您的应用程序 运行 作为 .NET Web 应用程序,GetSetting
方法将从 Web.config
或 app.config
文件中检索设置值。当应用程序在 Windows Azure 云服务或 Windows Azure 网站中 运行 时,GetSetting
将从 ServiceConfiguration.cscfg
检索设置值。
使用ILSpy, we could find the GetSetting
method would check the ServiceRuntime provider firstly and leverage 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)
来禁用跟踪日志。