SharedAccessExpiryTime的最大限制是60分钟?

时间:2012-09-04 17:13:22

标签: c# azure azure-storage

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

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

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

  

服务器无法验证请求。确保价值   正确形成授权标头,包括签名。

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

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

2 个答案:

答案 0 :(得分:2)

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

  

...您可以在单个共享访问签名上指定它。在这   例如,签名可能有效的间隔限于   一小时。 ...

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

答案 1 :(得分:2)

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