C# Azure类库访问GetConfigurationSettingValue vs.web.config
我有一个在Azure Worker角色和ASP.NET网站之间共享的类库。库中的方法需要从配置中提取一个值,以确定是否应该发送电子邮件 在ASP.NET网站中,设置位于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"/> 我
<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的答案。