Канонизированный ресурс для составления списка таблиц хранилища Azure - PullRequest
0 голосов
/ 26 ноября 2018

Я успешно получил данные таблицы хранения Azure, используя следующий код.

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("https://" + storageAccountName + ".table.core.windows.net/" + tableName;);
request.Method = "GET";
request.Accept = "application/json";
var date = DateTime.UtcNow.ToString("R", System.Globalization.CultureInfo.InvariantCulture);
request.Headers["x-ms-date"] = date;
request.Headers["x-ms-version"] = "2015-04-05";
string stringToSign = date + "\n/" + storageAccount + "/" + tableName; //Canonicalized Resource
System.Security.Cryptography.HMACSHA256 hasher = new System.Security.Cryptography.HMACSHA256(Convert.FromBase64String("accessKey"));
string strAuthorization = "SharedKeyLite " + storageAccountName + ":" + System.Convert.ToBase64String(hasher.ComputeHash(System.Text.Encoding.UTF8.GetBytes(stringToSign)));
request.Headers["Authorization"] = strAuthorization;
Task<WebResponse> response = request.GetResponseAsync();
HttpWebResponse responseresult = (HttpWebResponse)response.Result;  

Но при попытке получить список таблиц в учетной записи хранения с использованием следующего API REST возникла исключительная ситуация: " Удаленный сервер возвратил ошибку: (403) Запрещено. "

https://myaccount.table.core.windows.net/Tables

Я предположил, что Canonicalized Resource должен отличаться для этого запроса REST, и проанализировал некоторую документацию Microsoft, но не смог найти какую-либо ссылку для его построения для таблиц списков REST api.

Пожалуйста, помогитепри получении списка таблиц учетных записей хранилища Azure.

1 Ответ

0 голосов
/ 26 ноября 2018

Пожалуйста, измените следующую строку кода:

string stringToSign = date + "\n/" + storageAccount + "/" + tableName;

на

string stringToSign = date + "\n/" + storageAccount + "/Tables";

Также обратите внимание, что URL вашего запроса также изменится на https://storageaccount.table.core.windows.net/Tables.

...