2016-11-06 5 views
2

Мне был предоставлен маркер SAS магазина магазина Azure с доступом только для чтения. Я могу просматривать его с помощью Azure Storage Explorer без проблем. При попытке доступа к нему через консольное приложение, я не буду в состоянии разобрать строку соединения с жетоном SAS как TableEndpoint, но когда я пытаюсь создать таблицу клиент я получаю:Azure Table Storage - Создать строку подключения из токена SAS только для чтения

System.InvalidOperationException: Нет учетные данных предоставлена. на Microsoft.WindowsAzure.Storage.CloudStorageAccount.CreateCloudTableClient()

Этого синтаксис я использовал для строки подключения (с замененными значениями):

<add key="StorageConnectionString" value ="TableEndpoint=https://myaccount.table.core.windows.net/Table?sv=2015-04-05&amp;tn=Table&amp;sig=Signature&amp;se=2099-99-99T12%3A00%3A00Z&amp;sp=r" /> 

Наконец, моя консоль код приложения:

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

CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); 

ответ

5

Я думаю, вам нужно использовать класс StorageCredentials. Вот пример:

StorageCredentials accountSAS = new StorageCredentials(sasToken); 
CloudStorageAccount accountWithSAS = new CloudStorageAccount(accountSAS, "account-name", endpointSuffix: null, useHttps: true); 
CloudTableClient tableClientWithSAS = accountWithSAS.CreateCloudTableClient(); 
1

Вы можете обратиться к следующему примеру коду для использования конечной точки службы таблицы и Shared Access Signature для инициализации нового экземпляра класса CloudTableClient с помощью new CloudTableClient(Uri, StorageCredentials).

StorageCredentials creds = new StorageCredentials("your SAStoken"); 

CloudTableClient tableClient = new CloudTableClient(new Uri("your table endpoint"), creds);