我使用.NET API在给定的表上创建SAS:
var tablePolicy = new SharedAccessTablePolicy()
{
SharedAccessExpiryTime = DateTime.Now.Add(TimeSpan.FromHours(2)),
Permissions = SharedAccessTablePermissions.Query
};
var permissions = new TablePermissions();
permissions.SharedAccessPolicies.Add("myPolicy", tablePolicy);
var credentials = new StorageCredentials(
"#my account here#",
"#my account secondary key here#");
var tableClient = new CloudTableClient(
new Uri("https://#my account here#.table.core.windows.net/"),
credentials);
var logTable = tableClient.GetTableReference("WADLogsTable");
logTable.SetPermissions(permissions);
var sas = logTable.GetSharedAccessSignature(tablePolicy, "myPolicy", null, null, null, null);
然后,我接受最后一个'sas'变量并使用它来创建凭据并执行查询:
var credentials = new StorageCredentials(sas);
var tableClient = new CloudTableClient(
new Uri("#my account URI here#"),
credentials);
var logTable = tableClient.GetTableReference("WADLogsTable");
var rows = logTable.ExecuteQuery(new TableQuery()).ToArray();
然后我收到403(禁止)错误。
我做错了什么?
答案 0 :(得分:2)
我认为您收到此错误是因为您在创建SAS时同时定义SharedAccessTablePolicy
和Policy Name
。因此,如果您使用以下任何一个应该工作:
var sas = logTable.GetSharedAccessSignature(tablePolicy, null, null, null, null, null);
或
var sas = logTable.GetSharedAccessSignature(null, "myPolicy", null, null, null, null);