CloudConfigurationManager.GetSetting在生产中返回空字符串?

时间:2013-02-17 01:11:03

标签: c# azure

我刚刚将我的项目升级到Azure Tools 1.8(2012年10月SDK),我遇到了一个奇怪的问题;

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

的信息:

  • 模拟器/ localhost工作正常
  • 通过RDP验证dll-version
  • 试图获取各种测试设置
  • 目前,生产槽中的代码行正常运行。
  • 我正在使用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?

  [...]

}

该设置在门户网站中可见,因此无需部署。

4 个答案:

答案 0 :(得分:4)

我已修好它,以下步骤解决了它:

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

有些步骤可能是不必要的,但我不确定它们中的哪一个: - )

答案 1 :(得分:1)

如何使用RoleEnvironment.GetConfigurationSettingValue(“ConnectionString”)代替;假设您正在尝试从服务配置文件(cscfg)获取值?

答案 2 :(得分:1)

我遇到了同样的问题。我已将项目更新为使用Azure SDK 2.0。我为我的Web和辅助角色更新了NuGet包,但Visual Studio中的Azure项目仍然是旧版本。

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

答案 3 :(得分:1)

我将Azure SDK从2.0升级到2.2后得到了这个。我能够解决:

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