shareaccessblobpolicy在给定的时间内没有过期- AZURE

本文关键字:过期 AZURE 时间 shareaccessblobpolicy | 更新日期: 2023-09-27 18:03:17

有很多关于共享访问签名的例子,但我仍然不知道我的代码出了什么问题。

我要做的是,我要为blob创建一个可下载的链接,并将其显示给用户。这些例子通常是关于如何保持它的活力。我想知道如何过期。

我能够创建可下载的链接,它正在工作,但它不是在给定的时间过期。我创建了一个SharedAccessBlobPolicy并设置了SharedAccessExpiryTime属性,但是它没有按时过期。

例如,如果我设置5分钟,30分钟后它仍然工作。

SharedAccessBlobPolicy sharedPolicy = new SharedAccessBlobPolicy()
                     {                  
                      SharedAccessExpiryTime =  DateTime.UtcNow.AddMinutes(5),
                      Permissions = SharedAccessBlobPermissions.Read
                      };
下面是我的代码:
string blobName = "test.txt"; //just for an example
CloudStorageAccount account = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("myConnectionString"));
CloudBlobClient client = account.CreateCloudBlobClient();  

// Build shared access signature
CloudBlobContainer container = client.GetContainerReference(ConfigurationManager.AppSettings.Get("myContainerReference"));
container.CreateIfNotExists();

////Get a reference to a blob within the container.
//Create a new stored access policy and define its constraints.
SharedAccessBlobPolicy sharedPolicy = new SharedAccessBlobPolicy()
                 {                  
                  SharedAccessExpiryTime =  DateTime.UtcNow.AddMinutes(5),
                  Permissions = SharedAccessBlobPermissions.Read
                  };

//Get the container's existing permissions.
BlobContainerPermissions permissions = new BlobContainerPermissions();
// The public access setting explicitly specifies that the container is private, 
// so that it can't be accessed anonymously.
permissions.PublicAccess = BlobContainerPublicAccessType.Off;
//Add the new policy to the container's permissions.
string policyName = "myPolicy";
permissions.SharedAccessPolicies.Clear();   
permissions.SharedAccessPolicies.Add(policyName,sharedPolicy);
container.SetPermissions(permissions);
CloudBlockBlob blob = container.GetBlockBlobReference(blobName);
string sasBlobToken = blob.GetSharedAccessSignature(null, policyName);  
string downloadLink = blob.Uri + sasBlobToken;

downloadLink应该工作5分钟,但它从未死亡。(我打赌它会死,只是不知道它什么时候会死)

注:我不会在这里分享整个代码,只是供参考,没有调试错误或任何其他类型的错误。它作为可下载的链接工作得很好。它只是不会在给定的时间内过期。

我不知道我错过了什么。谢谢你的关注

shareaccessblobpolicy在给定的时间内没有过期- AZURE

我刚试过这个,链接在我5分钟后过期了。请检查浏览器是否没有缓存该文件。如果是这种情况,那么您将继续看到这些文件,因为它们不是在每个请求时都从存储服务中获取的。