我正在学习Azure,我已成功上传并在我的容器中列出文件。当我在家用电脑上运行下面的代码时,一切正常,没有例外,但是当我在我的工作电脑上运行时,我发现一个例外情况:
Blob数据已损坏。收到的字节数不正确'12288'/'-1'
该文件似乎下载到我的本地驱动器就好了,我无法弄清楚为什么它在两台不同的PC上运行不同,完全相同的代码。
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("My connection string");
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");
CloudBlockBlob blockBlob = container.GetBlockBlobReference("ARCS.TXT");
using (var fileStream = System.IO.File.OpenWrite(@"c:\a\ARCS.txt"))
{
blockBlob.DownloadToStream(fileStream);
}
答案 0 :(得分:0)
可能是您的组织的防火墙正在阻止特定端口。我写了一篇讨论类似端口相关问题的博客。将要求您验证一次。 http://nabaruns.blogspot.in/2012/11/common-port-related-troubleshoot-in.html
此致 Nabarun
答案 1 :(得分:0)
您的代码看起来是正确的。
这是一个奇怪的问题。更奇怪的是,即使在错误之后,也可以正确下载文件。我建议你在两台机器上使用Azure storage explorer。
如果Azure存储资源管理器在这两台计算机上都能正常运行,那么下一步就是检查两台计算机上的SDK版本。旧版SDK可能会出现此类错误。
您可能还想尝试Commandline Downloader来解决问题。
注意 - Azure存储资源管理器和命令行下载程序是开源的。如果通过它们下载工作正常,那么你也可以下载它的代码并通过它进行调试。
答案 2 :(得分:-1)
我建议尝试使用CloudBlob.DownloadToFile或CloudBlob.DownloadToStream而不是CloudBlockBlob