设置必须为"name = value"形式.不知道该怎么做

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)

Pha*_*uck 5

"StorageConnectionString"应该采用以下格式:

DefaultEndpointsProtocol=[http|https];AccountName=<YourAccountName>;AccountKey=<YourAccountKey>'描述在这里

此外,用于CloudConfigurationManager获取您的连接字符串:

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

这提供了额外的好处,即在您的应用程序在本地运行时使用 app.config/web.config 或在云中运行时以 azure 访问您的应用程序设置。看这个链接

然后,您应该能够解析连接字符串,并且无需在开发和生产环境之间修改 app.config/web.config 设置。


juu*_*nas 5

添加对System.Configuration.dll的引用并添加using System.Configuration;文件。

然后将第一行更改为:

CloudStorageAccount storageaccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]);
Run Code Online (Sandbox Code Playgroud)

您需要获取值,而不仅仅是将键传递给Parse。


Gau*_*tri 0

您遇到此错误的原因是因为您要求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为此,我必须添加装配参考。