AzureBlobStorage:计算的MD5与现有属性不匹配

时间:2014-07-21 09:48:20

标签: azure cloudberry

提供以下代码和输出,每次尝试下载时,我都会获得此文件的相同异常。

如果我在没有md5验证的情况下下载它并检查内容,那么该文件没有任何问题,因此我怀疑blob元数据上的md5属性值不正确。

我试图弄清楚它最初会如何变得无效。在上传文件时,是否不是azure blob存储内部设置此属性?

我不想将DisableContentMD5Validation作为解决方案。

(ps。我首先使用了Couldberry Explorer来上传文件)

     static void Main(string[] args)
    {
        {
            try
            {

                var client = account.CreateCloudBlobClient();
                var container = client.GetContainerReference("algorithms");
                var blob = container.GetBlockBlobReference("SInnovations.Algorithms/SInnovations.Algorithms.FootprintFinder.1.0.0-pre-20140430.zip");
                blob.FetchAttributes();
                Console.WriteLine(blob.Properties.ContentMD5);

                blob.DownloadToFile("c:\\dev\\test.zip", System.IO.FileMode.Create);

            }
            catch (StorageException ex)
            {
                if (ex.Message == "Calculated MD5 does not match existing property")
                {
                    Console.WriteLine("Calculated MD5 does not match existing property");
                }

            }
        }
        {


            var client = account.CreateCloudBlobClient();
            var container = client.GetContainerReference("algorithms");
            var blob = container.GetBlockBlobReference("SInnovations.Algorithms/SInnovations.Algorithms.FootprintFinder.1.0.0-pre-20140430.zip");
            blob.FetchAttributes();
            Console.WriteLine(blob.Properties.ContentMD5);

            blob.DownloadToFile("c:\\dev\\test.zip", System.IO.FileMode.Create,null,new BlobRequestOptions()
            {
                DisableContentMD5Validation = true,
            });
            using (var md5 = MD5.Create())
            {
                using (var stream = File.OpenRead("c:\\dev\\test.zip"))
                {
                    Console.WriteLine(md5.ComputeHash(stream));
                }
            }

        }
    }
}

给出了这个输出

RH4EqqbthSm24KPgZ2VSGQ==
Calculated MD5 does not match existing property
RH4EqqbthSm24KPgZ2VSGQ==
System.Byte[]
Press any key to continue . . .

错误的例子,本地文件md5是实际的,Hv + nQRNCPQnvy4WU9 + qaQA ==。

在某些时候,财产必须设置错误。

解。下载并计算md5并更新blob的属性值。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,文件是通过CloudBerry Storage Explorer(2.4.0.163)上传的。 我通过Azure门户和Azure存储资源管理器(http://storageexplorer.com/)上传了相同的文件,但没有遇到同样的问题(内容损坏或md5不匹配)。