通过Azure存储资源管理器读取访问权限或常规浏览器适用于现有SAS令牌。控制台访问正在抛出Forbidden(403)异常。
引用的appconfig的代码如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<appSettings>
<add key="SASToken" value="sv=[REMOVED]&tn=[REMOVED]&sig=[REMOVED]&se=[REMOVED]&sp=r" />
</appSettings>
</configuration>
控制台应用程序的代码如下:
StorageCredentials accountSAS = new StorageCredentials(CloudConfigurationManager.GetSetting("SASToken"));
CloudStorageAccount accountWithSAS = new CloudStorageAccount(storageCredentials: accountSAS, accountName: "acccount-name", endpointSuffix: "core.windows.net", useHttps: true);
CloudTableClient tableClient = accountWithSAS.CreateCloudTableClient();
CloudTable table = tableClient.GetTableReference("TableName");
if (table.Exists() == true)
{
Console.WriteLine("Table Exists.");
}
else
Console.WriteLine("Table Does not Exist.");
答案 0 :(得分:1)
根据我的经验,403错误表示它没有权限这样做。这意味着Service(table)SAS无权检查表是否存在。如果我们想检查表是否存在,我们需要存储帐户级SAS,而不是服务(表)SAS。更多信息请参阅types of shared access signatures。虽然我们无权检查表是否存在,但我们仍然具有SAS分配的访问权限。我们也可以使用表查询来检索表记录。例如var result = table.ExecuteQuery(new TableQuery {TakeCount =5})
;它将获得与常规浏览器类似的结果。