Verbringen Sie viele Stunden, um dies zu beheben.Azure-Tabelle mit Shared Access abfragen Signatur-Rückgabe nicht implementiert, aber mit Verbindungszeichenfolge funktioniert
Ich habe eine Tabelle und möchte eine schreibgeschützte SAS erstellen und den Clientkomponenten Lesezugriff gewähren. Aber nie erfolgreich sein.
Wenn nur Verbindungszeichenfolge verwenden und diese direkt wie Tisch Haken:
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);
es gut funktioniert. Aber mit SAS wie unten, kehrt immer 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);
}
Versuchte verschiedene Möglichkeiten, geben weniger als 1 Stunde Zeit, mit dem Namen oder anonyme Richtlinie Bezeichner verwenden Signatur nur („sig“) StorageCredentials
zu erstellen. Alle sind mit verschiedenen Fehlern gescheitert. Meistens 501 not implemented
, manchmal resource not found
, manchmal 403 Forbidden
.
Konnte nützliche Informationen online nicht finden. Ich verwende Microsoft.WindowsAzure.Storage
Version 3.1 SDK.
hoch Jede Hilfe
Sie haben es genagelt. Ich konnte es nicht finden, bis du es zeigst. Das Entfernen des Tabellennamens von Uri führt dazu, dass es funktioniert. Vielen Dank. –