2016-11-07 62 views
0

通過Azure存儲資源管理器讀取訪問權限或常規瀏覽器適用於手頭SAS令牌。控制檯訪問正在拋出Forbidden(403)異常。下面所引用的AppConfig瞭解Azure CloudTableClient:禁止(403)異常

代碼:

<?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]&amp;tn=[REMOVED]&amp;sig=[REMOVED]&amp;se=[REMOVED]&amp;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

我很困惑 - 您是否正在使用預生成的SAS令牌並將其附加到您的各種連接?如果是這樣的話:那不是SAS的工作原理。 –

+0

我只是試圖建立一個連接到表存儲通過控制檯應用程序使用我提供的只讀SAS令牌。 – Joel

回答

1

從我的經驗,403錯誤表明它沒有權限去做。這意味着使用無法檢查表是否存在的服務(表)SAS。如果我們想檢查表是否存在,我們需要存儲帳戶級SAS,但不需要服務(表)SAS。更多信息請參閱types of shared access signatures。雖然我們沒有權限檢查表是否存在,但我們仍然擁有SAS分配的訪問權限。我們也可以使用表查詢來檢索表記錄。例如var result = table.ExecuteQuery(new TableQuery {TakeCount =5});它會得到與普通瀏覽器類似的結果。