我已经写了下面的代码来获得带有缓存过期令牌的blob url,实际上已经设置了2小时来过期blob url,
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(containerName);
CloudBlockBlob blockBlob = container.GetBlockBlobReference("blobname");
//Create an ad-hoc Shared Access Policy with read permissions which will expire in 2 hours
SharedAccessBlobPolicy policy = new SharedAccessBlobPolicy()
{
Permissions = SharedAccessBlobPermissions.Read,
SharedAccessExpiryTime = DateTime.UtcNow.AddHours(2),
};
SharedAccessBlobHeaders headers = new SharedAccessBlobHeaders()
{
ContentDisposition = string.Format("attachment;filename=\"{0}\"", "blobname"),
};
var sasToken = blockBlob.GetSharedAccessSignature(policy, headers);
blobUrl = blockBlob.Uri.AbsoluteUri + sasToken;使用上面的代码,我得到了具有有效到期令牌的blob url,现在我想检查blob url在一个客户端应用程序中是否有效。我尝试了web请求和http客户端方法,通过传递URL并获得响应状态代码。如果响应码是404,那么我假设URL已经过期,否则URL仍然有效,但是这种方法需要更多的时间。
请给我任何其他的建议。
发布于 2015-04-08 16:10:00
也许你可以从生成的SAS中解析"se“参数,这意味着过期时间,例如"se=2013-04-30T02%3A23%3A26Z”。但是,由于服务器时间可能与客户端时间不同,因此解决方案可能不稳定。
http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-shared-access-signature-part-1/
https://stackoverflow.com/questions/29495038
复制相似问题