CloudConfigurationManager.GetSetting在生产中返回空字符串
本文关键字:字符串 返回 生产中 GetSetting CloudConfigurationManager | 更新日期: 2023-09-27 17:59:47
我刚刚将我的项目升级到Azure Tools 1.8(2012年10月SDK),遇到了一个奇怪的问题;
在我的WorkerRole中,我对CloudConfigurationManager.GetSetting
的调用返回null(可以是空字符串,很难从日志文件中判断)。换句话说;我无法从角色环境中获取设置。
信息:
- Emulator/localhost运行良好
- 通过RDP验证dll版本
- 尝试获取各种测试设置
- 同样的代码行现在在生产槽中运行得很好
- 我在用微软。WindowsAzure。来自nuget的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
的程序集绑定重定向 - 将
osFamily
从1升级到2(Windows 2008 SP2->Windows 2008 R2)
有些步骤可能是不必要的,但我不确定是哪一个:-)
使用RoleEnvironment怎么样。改为GetConfigurationSettingValue("ConnectionString");假设您正试图从服务配置文件(cscfg)中获取一个值?
我也遇到了同样的问题。我已经更新了项目以使用Azure SDK 2.0。我为我的web和辅助角色更新了NuGet包,但Visual Studio中的Azure项目仍然是旧版本。
若要解决此问题,请右键单击Azure项目并选择"属性"。在"应用程序"选项卡下,您将看到一个更新Azure SDK的按钮。
我是在Azure SDK从2.0升级到2.2后得到的。我能够修复通过:
- 右键单击Azure项目并选择"属性"。根据"应用程序"选项卡更新Azure SDK。感谢rattrick1的回答
- 右键单击以管理NuGet软件包。在左侧单击"更新并更新WindowsAzure"。ConfigurationManager