Azure Table 存储 - 从只读 SAS 令牌创建连接字符串
Azure Table Storage - Create Connection String from a read-only SAS token
我获得了具有只读访问权限的 Azure table 存储 SAS 令牌。我可以使用 Azure 存储资源管理器浏览它而不会出现问题。在尝试通过控制台应用程序访问它时,我能够将带有 SAS 令牌的连接字符串解析为 Table 端点,但是当我尝试创建 Table 客户端时,我得到:
System.InvalidOperationException: No credentials provided.
at Microsoft.WindowsAzure.Storage.CloudStorageAccount.CreateCloudTableClient()
我用于连接字符串(带有替换值)的语法是:
<add key="StorageConnectionString" value ="TableEndpoint=https://myaccount.table.core.windows.net/Table?sv=2015-04-05&tn=Table&sig=Signature&se=2099-99-99T12%3A00%3A00Z&sp=r" />
最后,我的控制台应用程序代码:
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
我认为你需要使用 StorageCredentials
class。这是一个示例:
StorageCredentials accountSAS = new StorageCredentials(sasToken);
CloudStorageAccount accountWithSAS = new CloudStorageAccount(accountSAS, "account-name", endpointSuffix: null, useHttps: true);
CloudTableClient tableClientWithSAS = accountWithSAS.CreateCloudTableClient();
您可以参考以下示例代码,使用table 服务端点和共享访问签名来初始化CloudTableClient class 的新实例,方法是使用new CloudTableClient(Uri, StorageCredentials)
。
StorageCredentials creds = new StorageCredentials("your SAStoken");
CloudTableClient tableClient = new CloudTableClient(new Uri("your table endpoint"), creds);
遇到同样的问题时偶然发现了这个。使用 StorageCredentials 的解决方案似乎没问题,但后来我发现提到的连接字符串也有问题。
为了使连接字符串有效,它需要包含'SharedAccessSignature=',所以你的连接字符串应该是:
TableEndpoint=https://myaccount.table.core.windows.net;SharedAccessSignature=sv=2015-04-05&tn=Table&sig=Signature&se=2099-99-99T12%3A00%3A00Z&sp=r
我用这个来解决我的情况,它对我有用。
另请参阅 https://docs.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string
中有关 SAS 令牌的部分
我获得了具有只读访问权限的 Azure table 存储 SAS 令牌。我可以使用 Azure 存储资源管理器浏览它而不会出现问题。在尝试通过控制台应用程序访问它时,我能够将带有 SAS 令牌的连接字符串解析为 Table 端点,但是当我尝试创建 Table 客户端时,我得到:
System.InvalidOperationException: No credentials provided. at Microsoft.WindowsAzure.Storage.CloudStorageAccount.CreateCloudTableClient()
我用于连接字符串(带有替换值)的语法是:
<add key="StorageConnectionString" value ="TableEndpoint=https://myaccount.table.core.windows.net/Table?sv=2015-04-05&tn=Table&sig=Signature&se=2099-99-99T12%3A00%3A00Z&sp=r" />
最后,我的控制台应用程序代码:
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
我认为你需要使用 StorageCredentials
class。这是一个示例:
StorageCredentials accountSAS = new StorageCredentials(sasToken);
CloudStorageAccount accountWithSAS = new CloudStorageAccount(accountSAS, "account-name", endpointSuffix: null, useHttps: true);
CloudTableClient tableClientWithSAS = accountWithSAS.CreateCloudTableClient();
您可以参考以下示例代码,使用table 服务端点和共享访问签名来初始化CloudTableClient class 的新实例,方法是使用new CloudTableClient(Uri, StorageCredentials)
。
StorageCredentials creds = new StorageCredentials("your SAStoken");
CloudTableClient tableClient = new CloudTableClient(new Uri("your table endpoint"), creds);
遇到同样的问题时偶然发现了这个。使用 StorageCredentials 的解决方案似乎没问题,但后来我发现提到的连接字符串也有问题。
为了使连接字符串有效,它需要包含'SharedAccessSignature=',所以你的连接字符串应该是:
TableEndpoint=https://myaccount.table.core.windows.net;SharedAccessSignature=sv=2015-04-05&tn=Table&sig=Signature&se=2099-99-99T12%3A00%3A00Z&sp=r
我用这个来解决我的情况,它对我有用。
另请参阅 https://docs.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string
中有关 SAS 令牌的部分