.NET Azure SDK - Blob请求返回400 BadRequest

10

我正在使用最新的Azure SDK Nuget包,版本为3.0,今天发布,尝试在我本地的开发环境中工作,并与Blob存储一起使用。我使用Azure Storage Explorer在本地开发存储中创建了一个Blob,并尝试读取数据,但返回400 Bad Request。当我查看由异常返回的响应对象时,它说“其中一个HTTP标头的值格式不正确。”

奇怪的是,当我在浏览器中输入完整的URL时,下载Blob没有问题(http://xxx.x.x.x:10000/devstoreaccount1/test/722b6bea-d609-48e0-a4af-3ed0f5160ad9)。

这是我正在使用的代码:

        var storageAccount = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse("UseDevelopmentStorage=true");
        var blobClient = storageAccount.CreateCloudBlobClient();
        var container = blobClient.GetContainerReference("test");

        var blob = container.GetBlockBlobReference("722b6bea-d609-48e0-a4af-3ed0f5160ad9");
        var text = blob.DownloadText();

我也尝试在代码中创建一个新的 Blob,但是遇到了相同的异常。

1个回答

11

可能这篇文章会对你有所帮助:

http://social.msdn.microsoft.com/Forums/windowsazure/en-US/b1b66cc0-5143-41fb-b92e-b03d017ea3c1/400-bad-request-connecting-to-development-storage-using-azure-storage-client-ver-20?forum=windowsazuredata

更新

正如Gaurav Mantri在评论中指出的:

不要使用Storage Client library 3.0,因为它使用了最新的存储服务版本,而存储仿真器尚未支持。根据存储团队的博客文章,仿真器将在几个月内支持最新的存储服务版本。


我已经安装了最新的.NET Azure SDK,据我所知是2.2版本,因此我不确定是否存在相同的问题。除非由于某种原因,新的NuGet包(即3.0版本)无法与最新版本的模拟器(即2.2版本)一起使用。 - Jeff Treuting
1
看起来今天发布的 Azure Storage NuGet 包版本 3.0 与 Azure SDK for .NET 2.2 不兼容,这是我能找到的最新版本。当我降级回 2.1.0.4 NuGet 包时,它开始正常工作。我猜很快就会推出新的 SDK 来解决这个问题,但现在为了本地 Blob 存储的工作,我必须不升级。 - Jeff Treuting
6
不要使用Storage Client库3.0,因为它使用了最新的存储服务版本,而这个版本目前还不支持存储仿真器。根据存储团队的博客文章(http://blogs.msdn.com/b/windowsazurestorage/archive/2013/11/27/windows-azure-storage-release-introducing-cors-json-minute-metrics-and-more.aspx),存储仿真器将在几个月后支持最新的存储服务版本。 - Gaurav Mantri
@David - 下次我一定会注意的。 - Nitin Joshi
5
这个问题让我花了很多时间。没有支持主要的测试环境就发布了 - 真是糟糕! - acarlon
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接