Trascorrere molte ore per provare a risolvere questo problema.Tabella query di Azure con firma di accesso condiviso La restituzione non è stata implementata, ma con la stringa di connessione funziona
Ho una tabella e desidero creare un SAS di sola lettura e fornire ai componenti client l'accesso in lettura. Ma non ci riesci mai.
Se basta usare stringa di connessione e collegare direttamente tabella simili:
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(SliStorageConnection);
// Create the table client.
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
var table = tableClient.GetTableReference(GlobalFilterTable);
TableOperation tableOperation = TableOperation.Retrieve<TableEntity>(FilterTablePartition, "filter1");
TableResult tableResult = table.Execute(tableOperation);
Funziona bene. Ma con SAS come qui di seguito, restituisce sempre 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);
}
Provato modi diversi, danno meno di 1 ora di tempo, di nome o l'identificatore politica anonimo, utilizzare la firma Solo ("sig") per creare StorageCredentials
. Tutto fallito con errori diversi. Per lo più 501 not implemented
, a volte resource not found
, a volte 403 Forbidden
.
Impossibile trovare informazioni utili online. Sto usando l'SDK versione 3.1 Microsoft.WindowsAzure.Storage
.
Ogni aiuto è molto apprezzato
Hai inchiodato. Non riuscivo a trovarlo finché non lo fai notare. Rimuovendo il nome della tabella da uri fallo funzionare. Grazie mille. –