gpt4 book ai didi

c# - Azure 文件存储 SAS token - 错误 403

转载 作者:行者123 更新时间:2023-12-03 05:53:30 27 4
gpt4 key购买 nike

我正在尝试使用 .NET 中的存储库客户端为 Azure 文件存储操作实现共享访问签名 (SAS)。我已经创建了一个存储帐户,并通过门户(ARM 模型)创建了文件共享。使用以下代码,我生成 SAS token 和 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);
}

此后,我尝试从另一个应用程序访问文件共享,并使用上面生成的 token 迭代文件和目录列表。代码如下所示:

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: 'The remote server returned an error: (403) Forbidden.'

我在“foreach(var item in cfd.ListFilesAndDirectories())”行上收到此错误。

任何指点都将受到高度赞赏。

最佳答案

我认为有两个问题:

  1. 您的共享访问签名缺少 List 权限。为了列出共享中的文件/目录,SAS 必须具有 List 权限。
  2. 您的 _strToken 变量没有共享名称。应该是:

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

关于c# - Azure 文件存储 SAS token - 错误 403,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44771327/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com