1
2 분 이내에 만료되는 SAS 토큰이 있습니다.BLOB 다운로드 중에 SAS 토큰이 만료됩니다.
SAS = AzureClient.GetCloudContainer().GetSharedAccessSignature(new SharedAccessPolicy()
{
SharedAccessExpiryTime = DateTime.UtcNow + TimeSpan.FromMinutes(1)
}, "readonly");
var sasCreds = new StorageCredentialsSharedAccessSignature(SAS);
CloudStorageAccount _storageAccount = AzureClient.GetCloudStorageAccount();
CloudBlobClient sasBlobClient = new CloudBlobClient(_storageAccount.BlobEndpoint, sasCreds);
CloudBlob sasBlob = sasBlobClient.GetBlobReference("blobname");
여기서 readonly는 정책 이름입니다.
지금 나는 다음과 같은 작업을하고있는 중이 야 :using (BlobStream stream = sasBlob.OpenRead())
{
using (FileStream fileStream = File.OpenWrite(@"Smething.txt"))
{
BlobStreamReader(stream,fileStream);
}
}
private void BlobStreamReader(BlobStream blob,Stream OutputStream)
{
int buffersize = 4194304; // 4MB
byte[] data = new byte[buffersize];
do
{
int bytesRead = blob.Read(data,0,buffersize);
if (bytesRead == 0) break;
OutputStream.Write(data,0,bytesRead);
}
while (true);
}
문제는 SAS가 만료 될 때 다운로드가 실패합니다. 나는 SAS 토큰이 인증을 위해서만 필요하다는 것을 알고 있었고 다운로드가 만기 시간과 함께 시작 되었다면 SAS가 만료 되더라도 다운로드가 계속됩니다.