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: 'The remote server
returned an error: (403) Forbidden.'
我在 "foreach(var item in cfd.ListFilesAndDirectories())" 行收到此错误。
任何指点将不胜感激。
我认为有两个问题:
- 您的共享访问签名缺少
List
权限。为了在共享中列出 files/directories,SAS 必须具有 List
权限。
您的 _strToken
变量没有共享名称。应该是:
_strToken = @"https://myfileserviceendpoint.file.core.windows.net/samplefileshare" + fs.GetSharedAccessSignature(sasPolicy);
我正在尝试使用 .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: 'The remote server returned an error: (403) Forbidden.'
我在 "foreach(var item in cfd.ListFilesAndDirectories())" 行收到此错误。
任何指点将不胜感激。
我认为有两个问题:
- 您的共享访问签名缺少
List
权限。为了在共享中列出 files/directories,SAS 必须具有List
权限。 您的
_strToken
变量没有共享名称。应该是:_strToken = @"https://myfileserviceendpoint.file.core.windows.net/samplefileshare" + fs.GetSharedAccessSignature(sasPolicy);