Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Azure类库访问GetConfigurationSettingValue vs.web.config_C#_Azure_Class Library - Fatal编程技术网

C# Azure类库访问GetConfigurationSettingValue vs.web.config

C# Azure类库访问GetConfigurationSettingValue vs.web.config,c#,azure,class-library,C#,Azure,Class Library,我有一个在Azure Worker角色和ASP.NET网站之间共享的类库。库中的方法需要从配置中提取一个值,以确定是否应该发送电子邮件 在ASP.NET网站中,设置位于web.config中: <add key="SendEmails" value="true"/> 在Azure worker角色中,它位于ServiceConfiguration.Cloud.cscfg中: <Setting name="SendEmails" value="true"/> 我

我有一个在Azure Worker角色和ASP.NET网站之间共享的类库。库中的方法需要从配置中提取一个值,以确定是否应该发送电子邮件

在ASP.NET网站中,设置位于web.config中:

<add key="SendEmails" value="true"/>

在Azure worker角色中,它位于ServiceConfiguration.Cloud.cscfg中:

<Setting name="SendEmails" value="true"/>


我想做的是让我的类库能够访问任何一个配置设置,这取决于它运行在什么环境下

创建您自己的类来检索配置值,其中包含如下项:

if (RoleEnvironment.IsAvailable)
 return RoleEnvironment.GetConfigurationSettingValue("mySetting");
else
 return ConfigurationManager.AppSettings["mySetting"].ToString();
RoleEnvironment.IsAvailable将检测您是否在Windows Azure结构中,并返回true。它将要求您在ASP.NET项目中包含Microsoft.WindowsAzure.ServiceRuntime程序集/引用


如果您想了解更多信息,我会的。

请查看RoleEnvironment.IsAvailable


您可以编写一个快速的“helper”类,该类根据RoleEnvironment.IsAvailable是否返回true来分支逻辑。例如,如果为true,则从web.config读取,如果为false,则从云配置读取。

这是最新Azure SDK的内置功能。您可以使用CloudConfigurationManager.GetSetting(“”方法,它确定您是否在云中运行,并从其中一个进行读取。这是对RoleEnvironmentazure类的替换


如果您使用的是nuget,则nuget软件包名称为Microsoft.WindowsAzure.ConfigurationManager

我有一些代码,它们的工作方式相同,但界面流畅。虽然在回答时这是唯一的选项,但CloudConfigurationManager已经为您完成了这项工作。有关更多详细信息,请参见John C的答案。