簡體   English   中英

Azure文件存儲SAS令牌-錯誤403

[英]Azure File Storage SAS token - error 403

我正在嘗試使用.NET中的存儲庫客戶端為Azure文件存儲操作實現共享訪問簽名(SAS)。 我已經創建了一個存儲帳戶,並且已經通過門戶(ARM模型)創建了文件共享。 使用以下代碼,我生成SAS令牌和URL。

StorageCredentials sCred = new StorageCredentials("mystorageaccountname", "lhxxxxxxxxxxxxxxxxxxxxxxxxxxx-my key -xxxxxxxxxxxxxxx");
CloudFileClient cfc = new CloudFileClient(new Uri(@"https://myfileserviceendpoint.file.core.windows.net/"),sCred);

SharedAccessFilePolicy sasPolicy = new SharedAccessFilePolicy()
{
    Permissions = SharedAccessFilePermissions.Read | SharedAccessFilePermissions.Write | SharedAccessFilePermissions.Create,
    SharedAccessExpiryTime = DateTime.UtcNow.AddDays(1)
};

CloudFileShare fs = cfc.GetShareReference("samplefileshare");

if(fs.Exists())
{
    _strToken = @"https://myfileserviceendpoint.file.core.windows.net/" + fs.GetSharedAccessSignature(sasPolicy);                
}

之后,我試圖從另一個應用程序訪問文件共享,並使用上面生成的令牌遍歷文件和目錄列表。 代碼如下所示:

CloudFileShare fs = new CloudFileShare(new Uri(_strToken)); //_strToken generated above
CloudFileDirectory cfd = fs.GetRootDirectoryReference();
foreach(var item in cfd.ListFilesAndDirectories())
{
    //process item     
}

但是,出現以下錯誤:

Microsoft.WindowsAzure.Storage.StorageException:遠程服務器返回錯誤:(403)禁止。

我在“ foreach(cfd.ListFilesAndDirectories()中的var項目)”行上收到此錯誤。

任何指針將不勝感激。

我相信有兩個問題:

  1. 您的共享訪問簽名缺少List權限。 為了列出共享中的文件/目錄,SAS必須具有“ List權限。
  2. 您的_strToken變量沒有共享名。 它應該是:

    _strToken = @“ https://myfileserviceendpoint.file.core.windows.net/samplefileshare ” + fs.GetSharedAccessSignature(sasPolicy);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM