0

我正在学习 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);
}
4

3 回答 3

0

可能是您组织的防火墙阻止了特定端口。我写了一篇博客,讨论了类似的端口相关问题。将要求您验证一次。http://nabaruns.blogspot.in/2012/11/common-port-related-troubleshoot-in.html

问候纳巴伦

于 2012-12-21T05:45:22.767 回答
0

您的代码看起来正确。

这是一个奇怪的问题。这更奇怪,因为即使在错误之后文件也能正确下载。我建议您在两台机器上都使用Azure 存储资源管理器。

如果 Azure 存储资源管理器在两台机器上都能正常工作,那么下一步就是检查两台机器上的 SDK 版本。旧版本的 SDK 有可能出现此类错误。

您可能还想尝试使用Commandline Downloader来解决您的问题。

注意 - Azure 存储资源管理器和命令行下载器是开源的。如果通过它们下载工作正常,那么您也可以下载其代码并通过它进行调试。

于 2012-12-24T09:40:19.603 回答
-1

我建议尝试 CloudBlob.DownloadToFile 或 CloudBlob.DownloadToStream 而不是 CloudBlockBlob

于 2012-12-20T16:38:23.503 回答