mic*_*oan 8 c# azure azure-storage
所以我正在解析Azure存储帐户的连接字符串,当我到达使用连接字符串的应用程序页面时,编译器会捕获一个异常,指出"设置必须是"name = value"形式.
这是否意味着我应该在我设置appSettings的app.config文件中更正一些内容?如果是这样,你能否立即发现我的格式错误会导致此异常?
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=mykey" />
<appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
这是创建CloudStorage对象实例的代码:
CloudStorageAccount storageaccount = CloudStorageAccount.Parse ("StorageConnectionString");
CloudTableClient tableClient = storageaccount.CreateCloudTableClient ();
CloudTable austinBowlingAthletes = tableClient.GetTableReference ("austinBowlingAthletesTable");
Run Code Online (Sandbox Code Playgroud)
您"StorageConnectionString"应该采用以下格式:
DefaultEndpointsProtocol=[http|https];AccountName=<YourAccountName>;AccountKey=<YourAccountKey>'描述在这里
此外,用于CloudConfigurationManager获取您的连接字符串:
string connectionString = CloudConfigurationManager.GetSetting("StorageConnectionString");
这提供了额外的好处,即在您的应用程序在本地运行时使用 app.config/web.config 或在云中运行时以 azure 访问您的应用程序设置。看这个链接
然后,您应该能够解析连接字符串,并且无需在开发和生产环境之间修改 app.config/web.config 设置。
添加对System.Configuration.dll的引用并添加using System.Configuration;文件。
然后将第一行更改为:
CloudStorageAccount storageaccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]);
Run Code Online (Sandbox Code Playgroud)
您需要获取值,而不仅仅是将键传递给Parse。
您遇到此错误的原因是因为您要求CloudStorageAccount.Parse方法从字面上解析"StorageConnectionString"字符串,而不是存储在 app.config 文件中的此设置的值。您需要做的是从配置文件中读取此设置的值。例如,在控制台应用程序中我会执行以下操作:
var appSettingsReader = new AppSettingsReader();
var connectionString = (string) appSettingsReader.GetValue("StorageConnectionString", typeof(string));
CloudStorageAccount storageaccount = CloudStorageAccount.Parse(connectionString);
Run Code Online (Sandbox Code Playgroud)
System.Configuration为此,我必须添加装配参考。