Próbuję przekazać blob Azure Storage przez ashx. Na blockBlob.DownloadToStream (MemoryStream) to rzuca następujący wyjątek: Microsoft.WindowsAzure.Storage.StorageException: Calculated MD5 does not match existing property
Obliczenia MDU w magazynie Azure nie pasują do istniejącej właściwości
wiem, że znalezienie odpowiedniej blob. Jeśli wstawię kontener i ścieżkę, które nie istnieją, to zamiast tego otrzymam 404 wyjątek.
Użyłem Google'a, aby uzyskać wskazówki, co może być przyczyną tego błędu, ale nie ma już nic przydatnego. Czy ktoś ma jakiekolwiek przemyślenia na temat tego, co może być przyczyną tego? W ciągu ostatnich kilku dni przepisałem ten kod na kilka różnych sposobów, ale zawsze umiera na 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();
}
}
Dzięki. Spróbuję tego dziś wieczorem. Przesłałem 13 gigabajtów obrazów za pomocą FTP do Azure Blob Storage Bridge. Każdy wypróbowany plik daje mi ten komunikat o błędzie. Zastanawiam się, czy to właśnie powoduje uszkodzenie wszystkich plików. –
, dzięki czemu wyjątek zniknął dzięki. ashx wciąż zwraca tylko 0 bajtów. booooooo ... –
Po prostu sprawdź pozycję 'ms' w funkcji' ReadFully() 'twojej. Upewnij się, że jest to również 0. –