3

我正在尝试通过下面的代码为容器生成共享访问密钥

string sas = azureContainer.GetSharedAccessSignature (new SharedAccessPolicy ()
{
    SharedAccessStartTime =  DateTime.UtcNow,
    SharedAccessExpiryTime = DateTime.UtcNow.AddHours(1),
    Permissions = SharedAccessPermissions.Write | SharedAccessPermissions.Read
});

在这种情况下,共享访问签名可以正常工作。客户端成功上传容器上的文件。但是,如果我设置的时间超过 1 小时(例如 2 小时),我会在尝试在客户端上传文件时遇到异常说

服务器未能验证请求。确保 Authorization 标头的值正确形成,包括签名。

同样,如果我尝试设置它,DateTime.UtcNow.AddMinutes(61)我会得到相同的异常。任何小于或等于 60 分钟的时间都可以正常工作。

我的问题:共享访问签名的最长时间是 60 分钟吗?我在任何文档中都没有找到任何这样的东西。

4

2 回答 2

3

正如我在这个答案中指出的那样:从 2012 年春季版本开始,1 小时的限制已被取消。MSDN 文章在这里。现在,您需要自己从 github 拉取并构建 v1.7.1 库(假设您使用的是 .net),这里,因为它尚未作为最新 SDK+Tools 的一部分发布。此版本的库将使用 2012-02-12 协议版本。

于 2012-09-04T17:36:36.120 回答
2

实际上这是记录在案的:CloudBlob.GetSharedAccessSignature Method (SharedAccessPolicy)

...您可以在单个共享访问签名上指定它。在这种情况下,签名可能有效的时间间隔被限制为 一小时。...

如果您希望它超过一小时,我建议您改用容器级别的访问策略(也可以撤销)。

于 2012-09-04T17:27:12.600 回答