2016-11-07 1 views
0

Lesezugriff über Azure Storage Explorer oder normaler Browser funktioniert für das vorhandene SAS-Token. Der Konsolenzugriff wirft eine Forbidden (403) -Ausnahme auf.Grundlegendes zu Azure CloudTableClient: Forbidden (403) Ausnahme

-Code wie unten für die referenzierte 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]&amp;tn=[REMOVED]&amp;sig=[REMOVED]&amp;se=[REMOVED]&amp;sp=r" /> 
    </appSettings> 
</configuration> 

-Code wie unten für die Konsole App:

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

Ich bin verwirrt - nehmen Sie ein vorgeneriertes SAS-Token und hängen es an Ihre verschiedenen Verbindungen an? Wenn ja: So funktioniert SAS nicht. –

+0

Ich versuche nur eine Verbindung zu einem Tabellenspeicher über eine Konsolenanwendung herzustellen, indem ich ein schreibgeschütztes SAS-Token verwende, das mir zur Verfügung gestellt wurde. – Joel

Antwort

1

Aus meiner Erfahrung zeigt 403 Fehler, dass sie keine Erlaubnis, das zu tun hat. Es bedeutet, dass mit Service (Tabelle) SAS keine Berechtigung hat, zu überprüfen, ob die Tabelle vorhanden ist. Wenn wir überprüfen möchten, ob die Tabelle vorhanden ist, benötigen wir SAS auf Speicherkontoebene, nicht jedoch SAS (Service). Weitere Informationen finden Sie unter types of shared access signatures. Obwohl wir nicht die Berechtigung haben, zu überprüfen, ob eine Tabelle vorhanden ist, haben wir immer noch den Zugriff, den SAS zugewiesen hat. Wir können auch Tabellenabfragen verwenden, um die Tabelleneinträge abzurufen. z.B. var result = table.ExecuteQuery(new TableQuery {TakeCount =5}); Es wird das ähnliche Ergebnis mit dem normalen Browser bekommen.