我刚刚将项目升级到 Azure Tools 1.8(2012 年 10 月 SDK),但遇到了一个奇怪的问题;
在我的 WorkerRole 中,我调用 CloudConfigurationManager.GetSetting
返回 null(可以是空字符串,很难从日志文件中辨别)。换句话说;我无法从 RoleEnvironment 获取设置。
信息:
- 模拟器/本地主机工作完美
- 通过 RDP 验证 dll 版本
- 尝试获取各种测试设置
- 相同的代码行现在在生产槽中运行得很好。
- 我正在使用 nuget 中的 Microsoft.WindowsAzure.ConfigurationManager 1.8.0.0
- 向 app.config 添加了设置以进行测试,结果相同。
有什么线索吗?
更新:
调用代码(WorkerRole中的方法Run())
public override void Run(){
// Fetch connectionstring
var connectionString = CloudConfigurationManager.GetSetting("ConnectionString");
// connectionString is null here?
[...]
}
该设置在门户中可见,因此肯定已部署。
最佳答案
我已经修复了它,以下步骤解决了它:
- 其中一个项目引用了
Microsoft.WindowsAzure.Configuration
版本 1.7.0.0。更改了这一点(如果这是原因,那就奇怪了,因为输出中的 dll 版本正确。也许它是在运行时从 GAC 加载的?) - 删除了
Microsoft.WindowsAzure.Configuration
的程序集绑定(bind)重定向 - 将
osFamily
从 1 升级到 2(Windows 2008 SP2 -> Windows 2008 R2)
有些步骤可能是不必要的,但我不确定其中哪一个:-)
关于c# - CloudConfigurationManager.GetSetting 在生产中返回空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14917010/