C# CloudConfigurationManager.GetSetting返回null
我有以下指示: 但是C# CloudConfigurationManager.GetSetting返回null,c#,azure,app-config,azure-storage,C#,Azure,App Config,Azure Storage,我有以下指示: 但是connectionString是null,这是我的app.config: <?xml version="1.0" encoding="utf-8"?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <connectionStr
connectionString
是null
,这是我的app.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<connectionStrings>
<add name="StorageConnectionString"
connectionString="DefaultEndpointsProtocol=https;AccountName=storage;AccountKey=key" />
</connectionStrings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Data.OData" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.2.0.0" newVersion="5.2.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
确保所有引用都同步。有2012-06库,2012-10将它们设置为Copy Local=true并验证SDK版本。我处理同样的事情,让我发疯 这很有效,即使评论不合适,因为我确实引用了CloudConfigManager:
如果您正在创建一个不引用Microsoft.WindowsAzure.CloudConfigurationManager的应用程序,并且您的连接字符串位于上面显示的web.config或app.config中,则可以使用ConfigurationManager检索连接字符串。您需要在项目中添加对System.Configuration.dll的引用,并为其添加另一个命名空间声明:
我也有同样的问题。我已将该项目更新为使用Azure SDK 2.0。我为我的web和工作者角色更新了NuGet包,但VisualStudio中的Azure项目仍然在旧版本上
要解决此问题,请右键单击Azure项目并选择属性。在应用程序选项卡下,您将看到更新Azure SDK的按钮。如MSDN中的文档所示 CloudConfigurationManager只能读取appSettings标记中的配置设置。如果您的配置设置位于不同的标记中,则调用GetSetting将返回Null。这对我来说很有效
using System.Configuration;
当我将Azure SDK升级到2.2版时,我就遇到了这种情况 为了修复它,我更改了packages.config以使用更新版本的Azure ConfigurationManager
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.1.0" targetFramework="net45" />
我也有类似的问题。我从Azure SDK 2.0更新为2.2-在此过程中,我使用NuGet Manager将Microsoft.WindowsAzure.Storage更新为最新版本。PackageManager自动将Microsoft.WindowsAzure.Configuration设置为1.8.0.0。我无法运行它(它是针对.NET2.0的!?)。在我手动将所有引用设置为
- Microsoft.WindowsAzure.Storage 2.1.0.0
- Microsoft.WindowsAzure.Configuration 2.0.0.0
我认为这是因为CloudConfigurationManager.GetSetting加载程序集和调用函数的方式(通过反射)。遵循本教程: 您可以获得如下配置设置:
RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString")
我在将Azure SDK从2.0升级到2.2之后得到了这个。我可以通过以下方式进行修复:
我也有同样的问题。不要使用连接字符串,而是像这样使用configuration->appSettings->add键
<configuration>
<appSettings>
<add key="StorageConnectionString" value="[ConnectionStringHere]" />
</appSettings>
</configuration>
将Azure SDK从2.2升级到2.3后,此处的内容相同: 右键单击Azure项目选择属性。在应用程序选项卡中,单击“升级…”(感谢rattrick的回答) 然后还有一个错误需要解决: 尝试在计算仿真程序中运行Azure项目时引发异常: System.Configuration.ConfigurationErrorsException未处理 消息:Microsoft.WindowsAzure.ServiceRuntime.dll中发生类型为“System.Configuration.ConfigurationErrorsException”的未处理异常 其他信息:konnte nicht erstellt werden 在VS2013的“错误列表”窗口中,出现以下警告: 发现同一从属程序集的不同版本之间存在冲突。在Visual Studio中,双击此警告(或选择它并按Enter键)以修复冲突;否则,将以下绑定重定向添加到应用程序配置文件中的“运行时”节点:C:\Program Files(x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets 1635 我让VS解决了这个警告,一切正常。我也遇到了同样的问题(两次)。
string connectionStr = "AzureStorage";
var connectionstring = ConfigurationManager.ConnectionStrings[connectionStr].ConnectionString;
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionstring);
即使在重新启动Visual Studio和Azure emulator之后,CloudConfigurationManager.GetSetting(“SettingName”)也会返回null
我确信它以前已经工作过,并且我有最新的SDK
因此,解决方案是重新启动我的电脑,然后CloudConfigurationManager.GetSetting(“SettingName”)返回正确的值。我也遇到了同样的问题。这些建议对我都不管用,但“问题”是直截了当的。一个简单的例子必须理解这个类是如何工作的 它不会进入
app.config
/web.config
或存储应用程序设置的任何位置CloudConfigurationManager
与ServiceConfiguration.*.cscfg
和ServiceConfiguration.csdef
配合使用。.csdef必须包含设置的定义,但不能包含ConfigurationSettings
部分下的值。设置本身位于.cscfg文件中(在同一部分下,但包括值;我认为双重定义的原因是确保云和本地配置具有相同的设置)
您可以通过在Visual Studio中右键单击您的角色并选择属性->设置(对于StorageConnectionString,如果您的存储帐户已连接到云服务,只需选择“您的订阅”)或手动编辑来设置这些设置。如果你把设置搞砸了,你会得到一个感叹号图标
就这么简单 今天上午,我在重新访问Azure解决方案(Web+工作者角色)以更新Azure 2.5
后遇到了相同的问题。查看CloudConfigurationManager.GetSetting
的帮助,如果它在云平台(Azure)下运行,则从ServiceConfiguration.csfg
,如果作为.net
web应用运行,则从应用或
RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString")
<configuration>
<appSettings>
<add key="StorageConnectionString" value="[ConnectionStringHere]" />
</appSettings>
</configuration>
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");
}
}
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["AzureStorage"].ConnectionString);
string connectionStr = "AzureStorage";
var connectionstring = ConfigurationManager.ConnectionStrings[connectionStr].ConnectionString;
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionstring);