CloudConfigurationManager.GetSetting返回null

按照这里的说明,我有:

var connectionString = CloudConfigurationManager.GetSetting("StorageConnectionString"); 

但是connectionStringnull ,这是我的app.config:

                  

根据MSDN中的文档http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.windowsazure.cloudconfigurationmanager.aspx

CloudConfigurationManager只能读取appSettings标记内的配置设置。 如果您的配置设置在不同的标记内,则调用GetSetting将返回Null。

有同样的问题。 而不是使用连接字符串,使用配置 – > appSettings->这样的添加键…

      

这很有用,即使评论不适合,因为我确实有一个参考CloudConfigManager:

如果您创建的应用程序没有引用Microsoft.WindowsAzure.CloudConfigurationManager,并且您的连接字符串位于web.config或app.config中,如上所示,则可以使用ConfigurationManager检索连接字符串。 您需要向项目添加对System.Configuration.dll的引用,并为其添加另一个名称空间声明:

 using System.Configuration; CloudStorageAccount storageAccount = CloudStorageAccount.Parse( ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString); 

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

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

确保所有参考文献都是同步的。 有2012-06库和2012-10将它们设置为Copy Local = true并validationSDK版本。 我处理完全相同的事情,让我疯了。

当我将Azure SDK升级到2.2版时,这种情况发生在我身上。

为了解决这个问题,我更改了packages.config以使用更新版本的Azure ConfigurationManager。

  

根据我的理解,我想指出,如果你的云服务用完了,CloudConfigurationManager.GetSetting会调查web​​.config。 如果您在云服务中,它将查看cscfg。

请参阅此链接。

遵循本教程:

您可以获得如下配置设置:

 RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString") 

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

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

我有同样的问题(两次)。 即使重新启动Visual Studio并重新启动Azure模拟器后,CloudConfigurationManager.GetSetting(“SettingName”)也会返回null。

我确信它之前有效,我有最新的SDK。

所以解决方案是重新启动我的PC,之后CloudConfigurationManager.GetSetting(“SettingName”)返回正确的值。

在重新访问我的Azure解决方案(Web + Worker角色)以更新Azure 2.5之后,我遇到了同样的问题。 查看CloudConfigurationManager.GetSetting的帮助,如果它在云平台(Azure)下运行,则从ServiceConfiguration.csfg读取,如果作为.net Web应用程序运行,则从app或web.config读取。

所以我的修复只是将启动项目更改回Azure云项目,而不是Web项目。
我得到了null,因为它托管在错误的平台上并且没有设置从.config文件中读取。 (DOH!)

这是一个旧线程,但如果上述方法无法解决问题,我想分享我的解决方案,然后确保在运行应用程序时Azure存储模拟器正在运行; 至少对我来说这件事发生了。 对我来说,我必须创建一个类来处理这里提到的模拟器问题…

http://blog.simontimms.com/2013/08/28/configuration-settings-in-an-azure-worker-role/

 class ConfigurationProvider { private static string GetStorageConnectionString(string name) { try { return RoleEnvironment.GetConfigurationSettingValue(name); } catch (SEHException) { return System.Configuration.ConfigurationManager.ConnectionStrings[name].ConnectionString; } } public static string StorageConnectionString() { return GetStorageConnectionString("StorageConnectionString"); } public static string DefaultConnection() { return GetStorageConnectionString("DefaultConnection"); } } 

我遇到了类似的问题。 我从Azure SDK 2.0更新到2.2 – 在此过程中,我使用NuGet Manager将Microsoft.WindowsAzure.Storage更新为最新版本。 PackageManager自动将Microsoft.WindowsAzure.Configuration转换为1.8.0.0。 我无法运行(这是.Net 2.0!?)。 手动设置所有引用后

  • Microsoft.WindowsAzure.Storage 2.1.0.0
  • Microsoft.WindowsAzure.Configuration 2.0.0.0

一切顺利。

我认为这是因为CloudConfigurationManager.GetSetting加载程序集并调用funktions(通过reflection)的方式。

将Azure SDK从2.2升级到2.3后,此处相同:

右键单击Azure项目,选择“属性”。 在Application选项卡中单击“Upgrade …”(感谢rattrick的回答)。

然后又要解决一个错误:尝试在Compute Emulator中运行Azure项目引发exception:System.Configuration.ConfigurationErrorsException未处理消息:Microsoft.WindowsAzure中发生了未处理的类型’System.Configuration.ConfigurationErrorsException’exception。 ServiceRuntime.dll附加信息:konnte nicht erstellt werden。

在VS2013的“错误列表”窗口中,出现以下警告:

发现同一依赖程序集的不同版本之间存在冲突。 在Visual Studio中,双击此警告(或选择它并按Enter键)以修复冲突; 否则,将以下绑定重定向添加到应用程序配置文件中的“运行时”节点:C:\ Program Files(x86)\ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion.targets 1635

我让VS解决这个警告,一切正常。

这对我有用……

 using System.Configuration; 

 var connectionString = ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString; 

我有同样的问题。 没有任何建议对我有用,但“问题”很简单。 一个简单的方法就是要了解这个类的工作原理

它不会进入app.config / web.config或存储应用程序设置的任何位置。 CloudConfigurationManagerServiceConfiguration.*.cscfgServiceConfiguration.csdef 。 .csdef必须包含设置的定义,但不包含ConfigurationSettings部分下的值。 设置本身位于.cscfg文件中(在同一部分下但包含值;我认为双重定义的原因是确保云和本地配置具有相同的设置)。

您可以通过右键单击Visual Studio中的角色并选择“属性” – >“设置”(如果是StorageConnectionString,只需选择“您的订阅”,如果您的存储帐户已连接到云服务),或者通过手动编辑它们来设置这些。 如果你弄乱了设置,你会得到一个感叹号图标。

就那么简单。

在安装Azure SDK 2.6之后传递文字字符串时获得空值(之前正在工作)。

 CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["AzureStorage"].ConnectionString); 

替换了文字字符串,它工作正常。

  string connectionStr = "AzureStorage"; var connectionstring = ConfigurationManager.ConnectionStrings[connectionStr].ConnectionString; CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionstring);