Azure类库访问GetConfigurationSettingValue与web.config的对比

本文关键字:config web 类库 访问 GetConfigurationSettingValue Azure | 更新日期: 2023-09-27 18:23:43

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

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

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

在Azure工作人员角色中,它位于ServiceConfiguration.Cloud.cscfg:中

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

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

Azure类库访问GetConfigurationSettingValue与web.config的对比

创建自己的类来检索配置值,其中会有这样的项:

if (RoleEnvironment.IsAvailable)
 return RoleEnvironment.GetConfigurationSettingValue("mySetting");
else
 return ConfigurationManager.AppSettings["mySetting"].ToString();

RoleEnvironment.IsAvailable will detect应该检测您是否在Windows Azure结构中并返回true。这将要求您在ASP.NET项目中包含Microsoft.WindowsAzure.ServiceRuntime程序集/reference。

如果你想了解更多信息,我写了一篇关于这个主题的博客。

这是最新的Azure SDK内置的。您可以使用CloudConfigurationManager.GetSetting(")方法,它确定您是否在云中运行,并从其中一个或另一个中读取。这是RoleEnvironmentazure类的替代品。

http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.cloudconfigurationmanager.aspx

如果您正在使用nuget,则nuget包名称为Microsoft.WindowsAzure.ConfigurationManager

查看RoleEnvironment.IsAvailable.

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