我正在尝试通过以下代码生成容器的共享访问密钥
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分钟吗?我在任何文档中都没有找到任何这样的东西。
答案 0 :(得分:2)
实际上这是记录在案的:CloudBlob.GetSharedAccessSignature Method (SharedAccessPolicy)
...您可以在单个共享访问签名上指定它。在这 例如,签名可能有效的间隔限于 一小时。 ...
如果您希望它超过一小时,我建议您使用容器级访问策略(也可以撤销)。
答案 1 :(得分:2)
正如我在this answer中所指出的那样:从2012年春季发布开始,1小时限制已被取消。 MSDN文章是here。现在,您需要自己从github here拉出并构建v1.7.1库(假设您正在使用.net),因为这尚未作为最新SDK的一部分发布+工具呢。此版本的库将使用2012-02-12协议版本。