共享访问签名 URL returns 请求的 URL 不代表服务器上的任何资源

Shared Access Signature URL returns The requested URL does not represent any resource on the server

使用我的 Visual Studio 企业订阅,我可以从 blob 创建 SAS。 看起来像这样。我是从控制台创建的,对此非常有信心

https://[mystorageaccounthere].blob.core.windows.net/[thecontainernamehere]?sp=r&st=2022-02-02T21:25:10Z&se=2022-02-03T05:25:10Z&spr=https&sv=2020-08-04&sr=c&sig=[the signtaure]

然后我尝试从 Azure 存储示例中获取的示例来获取属性。

Uri mySASUri = new Uri(Environment.GetEnvironmentVariable("SAS_URL"));
BlobServiceClient service = new BlobServiceClient(mySASUri);
await service.GetPropertiesAsync();

结果异常

Unhandled exception. Azure.RequestFailedException: The requested URI does not represent any resource on the server.

任何想法

感谢所有关注此问题的人

您收到此错误的原因是您使用的 SAS 令牌类型不正确 (URL)。您正在容器上创建一个 SAS 令牌,它是一种 Service SAS 类型的令牌,仅适用于为其获取 SAS 令牌的容器(或 blob)。

考虑 BlobServiceClient.GetPropertiesAsync() is an account level operation, you would need to create an Account SAS 令牌并使用它来执行此操作。

请创建一个至少具有 read 权限的帐户 SAS URL 并在您的代码中使用它,您应该不会收到此错误。