Azure:我们可以在尝试阅读之前检查设置是否存在?

问题描述:

我目前使用RoleEnvironment.GetConfigurationSettingValue(propertyName)来获取在我的WebRole配置文件(csdef + cscfg)中定义的设置的值。好的,听起来不错。Azure:我们可以在尝试阅读之前检查设置是否存在?

如果设置存在,则工作正常,但如果未在csdef和cscfg中定义该设置,则会失败并显示异常。

我正在将现有的应用程序迁移到在web.config中具有许多配置设置的Azure。在我的代码中,为了读取一个设置值,我想测试一下:如果它存在于webRole配置中(csdef + cscfg),我从这里读取它,否则从web.config中使用ConfigurationManager读取它。 这将阻止从我的web.config迁移所有设置,并允许在部署应用程序时自定义一个设置。

有没有办法做到这一点?

我不想在try/catch中封装GetConfigurationSettingValue(并且如果我输入捕获,则从web.config读取),因为它确实是一种难看的方式(并且大多数情况下它不具有性能效率!)。

谢谢!

1.7 Azure SDK更新。 已引入CloudConfigurationManager类。允许单个GetSetting调用首先查看您的cscfg,然后如果找不到密钥则回退到web.config。

http://msdn.microsoft.com/en-us/LIBRARY/jj157248

前1.7 SDK 简单的答案是否定的。 (我知道的)

更有趣的话题是将配置视为依赖。我发现将配置设置视为依赖关系是有益的,这样可以随时间改变后台实现。该实现可能是一个假冒测试或更复杂的事情,如从.config/ .cscfg切换到多租户解决方案的数据库实施。

鉴于此配置包装,您可以将TryGetSetting作为内部方法编写,无论您的配置选项的来源是什么。将此功能添加到RoleEnvironment成员后,您只需更改该内部实现。

+0

感谢您的回答和观点。 – JYL 2011-05-16 15:27:09