繁体   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