2013-02-17 27 views
4

我刚将项目升级到Azure Tools 1.8(2012年10月SDK),我遇到了一个奇怪的问题;CloudConfigurationManager.GetSetting在生产中返回空字符串?

在我的WorkerRole中,我对CloudConfigurationManager.GetSetting的调用返回null(可以是空字符串,很难从日志文件中分辨出来)。换一种说法;我无法从RoleEnvironment中获取设置。

信息:

  • 仿真器/本地主机通过RDP运行完美
  • 验证DLL版本
  • 试图获取各种testsettings
  • 相同的代码行正在运行的生产槽就好了马上。
  • 我使用的是来自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? 

    [...] 

} 

所以它肯定是部署的设置是在门户网站中可见。

+0

您试图检索的设置是否确实出现在Portal服务配置设置中(即设置是否已部署)?分享有问题的代码? – viperguynaz 2013-02-17 03:00:01

+0

是的。我更新了调用代码。 – 2013-02-17 10:12:02

回答

4

,我已经修复它,下面的步骤来解决它:

  • 一个参考Microsoft.WindowsAzure.Configuration版本1.7.0.0的项目。改变了这种(奇怪的,如果是这样的原因,虽然因为在输出的dll在正确的版本。也许它是从GAC在运行时加载?)
  • 删除程序集绑定重定向为Microsoft.WindowsAzure.Configuration
  • 从1到2升级的osFamily (的Windows 2008 SP2 - > Windows 2008 R2上)

某些步骤可能是不必要的,但我不知道其中哪些:-)

1

如何使用RoleEnvironment.GetConfigurationSettingValue(“ConnectionString”)来代替;假设你试图从服务配置文件(cscfg)获取一个值?

1

的我有同样的问题。我已经更新了项目以使用Azure SDK 2.0。我更新了我的网络和工作者角色的NuGet包,但Visual Studio中的Azure项目仍旧在旧版本中。

要解决此问题,请右键单击Azure项目并选择“属性”。在应用程序选项卡下,您会看到一个按钮来更新您的Azure SDK。

+0

太好了,谢谢!这个选项很好隐藏! – Ryan 2013-11-05 15:23:22

1

将Azure SDK从2.0升级到2.2后,我得到了这个。我可以通过以下方式修复:

  1. 右键单击Azure项目并选择“属性”。根据应用程序选项卡更新Azure SDK。感谢rattrick1的回答。
  2. 右键单击管理NuGet包。在左侧单击更新并更新WindowsAzure.ConfigurationManager。