Я пытаюсь передать блесну Azure Storage через ashx. В blockBlob.DownloadToStream(memoryStream) он бросает следующее исключение: Microsoft.WindowsAzure.Storage.StorageException: Calculated MD5 does not match existing property
Я знаю, что он нашел правильный blob. Если я помещаю контейнер и путь, которых не существует, вместо этого он дает мне исключение 404.
У меня Googled для подсказок о том, что может вызвать эту ошибку, но ничего полезного не возникает. У кого-нибудь есть мысли о том, что может быть причиной этого? За последние пару дней я переписал этот код несколькими разными способами, но он всегда умирает в DownloadToStream.
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;
public void ProcessRequest(HttpContext context) {
// Retrieve storage account from connection string.
Microsoft.WindowsAzure.Storage.CloudStorageAccount storageAccount = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse(Microsoft.WindowsAzure.CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// Retrieve reference to a previously created container.
CloudBlobContainer container = blobClient.GetContainerReference("gmt");
// Retrieve reference to blob named "articles/142/222.jpg".
CloudBlockBlob blockBlob = container.GetBlockBlobReference("articles/142/222.jpg");
using (var memoryStream = new MemoryStream()) {
blockBlob.DownloadToStream(memoryStream);
byte[] photoByte = ReadFully(memoryStream);
context.Response.Clear();
context.Response.ContentType = "image/jpeg";
context.Response.OutputStream.Write(photoByte, 0, photoByte.Length);
}
}
public static byte[] ReadFully(Stream input) {
input.Position = 0;
using (MemoryStream ms = new MemoryStream()) {
input.CopyTo(ms);
return ms.ToArray();
}
}