为 Azure 存储帐户连接字符串构建连接字符串

Building a Connection string for a Azure Storage Account Connection String

我知道您可以使用此方法获取连接字符串:

 <add key="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=mystorage;AccountKey=MY_ACCOUNT_KEY" />

然后使用这个检索它:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));

而且我知道如何使用 SqlConnectionStringBuilder 构建连接字符串:

System.Data.SqlClient.SqlConnectionStringBuilder builder = new System.Data.SqlClient.SqlConnectionStringBuilder();
builder["DefaultEndpointsProtocol"] = "https";
builder["AccountName"] = "mystorage";
builder["AccountKey"] = "MY_ACCOUNT_KEY";
string conString = builder.ConnectionString;

但是显然这不适用于存储连接字符串。它说 SqlConnectionStringBuilder 不支持 DefaultEndpointsProtocol 或我指定的 3 个键中的任何一个。我怎样才能用这些键组成一个字符串?

不确定你为什么不使用你正在工作的第一个选项(也许你想在你的配置文件中将它们分开),但无论如何你可以将它们连接在一起以构建字符串:

var storageConnectionString = String.format("DefaultEndpointsProtocol={0};AccountName={1};AccountKey={2}", "https", "MyAccountName","MyAccountKey");

CloudStorageAccount.Parse(storageConnectionString);

回答

使用 CloudStorageAccount constructor that takes a StorageCredentials object. Then use the ToString(boolean) 重载获取连接字符串。

演示 Fiddle https://dotnetfiddle.net/ReWDqL

var accountName = "myAccount";
var keyValue = "c3RyaW5nIGxlbmd0aCB2YWxpZA==";
var useHttps = true;
var exportSecrets = true;

var storageCredentials = new StorageCredentials(accountName, keyValue);
var storageAccount = new CloudStorageAccount(storageCredentials, useHttps);
var connString = storageAccount.ToString(exportSecrets);

MSDN 文档

StorageCredentials Constructor (String, String)。使用指定的帐户名和键值初始化 StorageCredentials class 的新实例。

CloudStorageAccount Constructor (StorageCredentials, Boolean)。使用指定的凭据初始化 CloudStorageAccount class 的新实例,并指定是使用 HTTP 还是 HTTPS 连接到存储服务。

CloudStorageAccount.ToString Method (Boolean)。 Returns 存储帐户的连接字符串,可选择包含敏感数据。