我有一个小的可执行文件,我作为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上运行时加载的版本)
提前感谢任何线索!
答案 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以匹配另一个,现在一切正常。
太烦人了!