Spend many hours trying to figure it out.
I have a table and you want to create read-only SAS and give client components read access. But it never works out.
If you just use the connection string and connect the table like this:
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(SliStorageConnection);
It works great. But with SAS, as shown below, always returns 501 Not Implemented
var policy = new SharedAccessTablePolicy { SharedAccessExpiryTime = DateTime.Now.AddMinutes(30), Permissions = SharedAccessTablePermissions.Query }; string sas = table.GetSharedAccessSignature( policy, null, FilterTablePartition, String.Empty, FilterTablePartition, String.Empty); Uri tableSasUri = new Uri(table.Uri, sas); AccessTable(tableSasUri.AbsoluteUri.ToString()); private static void AccessTable(string tableSas) { string filterTableBaseUrl = tableSas.Substring(0, tableSas.IndexOf('?')); var filterTableSasCredentials = new StorageCredentials(tableSas.Substring(filterTableBaseUrl.Length)); CloudTableClient tableClient = new CloudTableClient(new Uri(filterTableBaseUrl), filterTableSasCredentials); var _manifestFilterCloudTable = tableClient.GetTableReference(GlobalFilterTable); TableOperation tableOperation = TableOperation.Retrieve<TableEntity>(FilterTablePartition, "filter1"); TableResult tableResult = _manifestFilterCloudTable.Execute(tableOperation); }
We tried different methods, gave less than 1 hour, a named or anonymous policy identifier, use only a signature ("sig") to create StorageCredentials . All failed with various errors. Mostly 501 Not Implemented , sometimes resource not found , sometimes 403 Forbidden .
Could not find useful information on the Internet. I am using the Microsoft.WindowsAzure.Storage version 3.1 SDK.
Any help is appreciated
source share