【发布时间】:2017-02-14 01:08:52
【问题描述】:
我为我的私有 Azure 存储 Blob 使用共享访问签名。当我为 blob 设置到期时间 30 分钟时,当我第一次调用方法 GetSasForBlobUsingAccessPolicy 时,我得到一些带有 sas 的 url,当我第二次在同一个 blob 上调用相同的方法时(在 30 分钟间隔内)我得到不同的 sas,并且两者都是有效的。为什么它们不同?如果没有过期,能买到同款吗?如果sas过期并获得相同的sas,是否可以延长过期时间?
以下是我的相关方法:
public void SetBlobContainer( string containerName )
{
string connectionString = string.Format( @"..." );
string sharedAccessPolicyName = "my-policy";
CloudStorageAccount storageAccount = CloudStorageAccount.Parse( connectionString );
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference( containerName );
container.CreateIfNotExists();
_blobContainer = container;
if ( !_blobContainer.GetPermissions().SharedAccessPolicies.ContainsKey( sharedAccessPolicyName ) )
{
CreateSharedAccessPolicy( sharedAccessPolicyName );
}
}
public string GetSasForBlob( CloudBlockBlob cloudBlockBlob )
{
string sasToken = cloudBlockBlob.GetSharedAccessSignature( new SharedAccessBlobPolicy()
{
SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes( 30 ),
}, "my-policy" );
return string.Format( CultureInfo.InvariantCulture, "{0}{1}", cloudBlockBlob.Uri, sasToken );
}
【问题讨论】:
标签: c# azure-blob-storage