我目前使用RoleEnvironment.GetConfigurationSettingValue(propertyName)
来获取我的WebRole配置文件(csdef + cscfg)中定义的设置的值。好的,听起来不对。
如果设置存在但是如果在csdef和cscfg中未定义设置,则会出现异常,这种情况很有效。
我正在将现有应用迁移到Azure,该应用程序在web.config中有许多配置设置。在我的代码中,为了读取设置值,我想测试:如果它存在于webRole配置(csdef + cscfg)中,我从这里读取它,否则我用webManager中的ConfigurationManager读取它。 这样可以防止从我的web.config迁移所有设置,并在部署应用程序时允许自定义设置。
有办法做到这一点吗?
我不想将GetConfigurationSettingValue
封装在try / catch中(如果我输入catch,则从web.config中读取),因为它实际上是一种丑陋的方式(而且大部分都不是性能有效!)。
谢谢!
答案 0 :(得分:3)
1.7 Azure SDK的更新。 已引入CloudConfigurationManager类。允许单个GetSetting调用首先查看cscfg,然后如果找不到密钥则返回web.config。
http://msdn.microsoft.com/en-us/LIBRARY/jj157248
Pre 1.7 SDK 简单的答案是否定的。 (我知道)
更有趣的话题是将配置视为依赖。我发现将配置设置视为依赖项是有益的,这样可以随时更改支持实现。这种实现对于测试或者更复杂的事情可能是假的,例如从 .config / .cscfg切换到多用户解决方案的数据库实现。
鉴于此配置包装器,您可以将TryGetSetting编写为内部方法,无论您的配置选项源是什么。将此功能添加到RoleEnvironment成员后,您只需更改该内部实现。