CloudConfigurationManager.GetSetting返回null,而RoleEnvironment.GetConfigurationSettingValue按预期工作

时间:2013-12-05 22:55:34

标签: azure startup

我有一个小的可执行文件,我作为Azure Web角色的启动任务的一部分运行。我使用RoleEnvironment.GetConfigurationSettingValue从可执行文件中的cscfg读取一些设置,这很好。我得到了反馈,建议使用CloudConfigurationManager.GetSetting,但是当我尝试它时,该方法返回null(设置未找到)。我可以在门户网站上看到我想要阅读的设置。

我看到有些人在使用CloudConfigurationManager时遇到了类似的问题,并询问了它: 1.在这里:CloudConfigurationManager.GetSetting returning null 2.在这里:CloudConfigurationManager.GetSetting returns empty string in production?

但解决方案始终是关于更新Azure SDK和所有引用,这对我不起作用。

(我们使用Azure SDK v2.0,所有引用都指向同一版本。我也验证了这是在VM上运行时加载的版本)

提前感谢任何线索!

2 个答案:

答案 0 :(得分:1)

我的问题是我的解决方案的StartUp Project改为WebRole项目。这导致解决方案作为无法在Azure模拟器内运行的Web项目启动。由于CloudConfigurationManager.GetSetting尝试通过联系Azure(或本例中的Azure模拟器)进行设置,并且它未运行,因此会返回null

解决方案是将StartUp项目更改为Azure项目,方法是右键单击它并选择Set as StartUp Project。在此之后,您的Web角色将开始在Azure模拟器下运行,一切都将正常运行..

答案 1 :(得分:0)

我发生了完全相同的事情。这是版本问题,但不容易看到。

如果我右键单击VS中References列表中的Microsoft.WindowsAzure.Configuration,它表示两个项目的版本3.0.0.0(一个工作,一个没有#)。但是......如果我打开每个项目的packages.config文件,其中一个实际引用3.2.1(并且已经工作),一个引用3.0.0(没有工作)。我使用Nuget将其更新为3.2.1以匹配另一个,现在一切正常。

太烦人了!