Azure Storage blobをashxに渡そうとしています。 blockBlob.DownloadToStream(memoryStream)それは以下の例外をスローしています。Microsoft.WindowsAzure.Storage.StorageException: Calculated MD5 does not match existing property
Azure Storage計算されたMD5が既存のプロパティと一致しません
正しいブロブを見つけることがわかりました。存在しないコンテナとパスを入れた場合、代わりに404例外が返されます。
私はこのエラーの原因になっている可能性があるヒントについてはGoogleで検索しましたが、何も役立つものはありません。誰かがこれを引き起こしている可能性のあることについて考えを持っていますか?私はこのコードを過去数日間にいくつか書き直しましたが、それは常に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();
}
}
ありがとうございます。私は今夜これを試してみましょう。私はAzure BLOBストレージブリッジにFTPを使って13ギガの画像をアップロードしました。試したすべてのファイルにこのエラーメッセージが表示されます。これがすべてのファイルを壊してしまったのだろうかと思います。 –
は例外を除外しました。 ashxはまだ0バイトを返すだけです。 booooooo ... –
あなたの 'ReadFully()'関数で 'ms'の位置をチェックするだけです。それが0になっていることを確認してください。 –