4

我刚刚将我的项目升级到 Azure 工具 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?

  [...]

}

该设置在门户中可见,因此它肯定已部署。

4

4 回答 4

4

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

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

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

于 2013-02-20T10:49:31.587 回答
1

如何改用 RoleEnvironment.GetConfigurationSettingValue("ConnectionString") ;假设您正在尝试从服务配置文件 (cscfg) 中获取值?

于 2013-02-18T00:49:35.283 回答
1

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

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

于 2013-05-21T01:46:50.887 回答
1

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

  1. 右键单击 Azure 项目并选择属性。根据应用程序选项卡更新 Azure SDK。感谢rattrick1的回答。
  2. 右键单击以管理 NuGet 包。在左侧单击更新并更新 WindowsAzure.ConfigurationManager。
于 2013-12-21T09:24:16.250 回答