Azure存储模拟器400错误请求

问题描述 投票:8回答:4

在尝试CreateIfNotExists时使用Azure存储模拟器时,我突然收到错误请求(400)错误。对内部异常的响应说:“其中一个HTTP标头的值格式不正确。”所有表都存在,数据在表中,所有内容都在处理,直到我的NuGet包更新。环顾四周似乎是一个常见的原因是Azure存储客户端库(现在5.0.0)的更新导致了不匹配。我将Azure SDK更新为2.6(因为我有VS2012)。这使存储仿真器达到4.0.0.0,但仍然没有运气......同样的错误。这是一件坏事,突然对包的一个包的更新导致整个事情破坏并完全杀死我的相当大的项目。有任何想法吗?

azure azure-storage-emulator
4个回答
13
投票

就我而言,问题在于容器名称,它具有严格的命名要求。

即:

  • 只允许使用小写字母,数字和短划线
  • 必须是3到63个字符

有关更多信息,请在MSDN上查看Naming and Referencing Containers, Blobs, and Metadata


7
投票

我不知道这对其他人来说是否是一个问题,但这是我已经想到的......

  • 存储模拟器4.1.0.0是与Azure存储客户端库5.0.0一起使用的模拟器
  • Storage Emulator 4.1.0.0随Azure SDK 2.7一起提供。
  • Azure SDK 2.7不适用于Visual Studio 2012。
  • 适用于VS2012的Azure SDK 2.6具有Emulator 4.0.0.0。我不知道什么是Storage Client Library兼容...我试过4.3.0.0,5.0.0.0和5.0.2,但没有运气

.

我对这件事的“哲学”问题是......

  • 我发现存储仿真器版本和存储客户端库版本之间没有明显的连接....数字不匹配;没有错误,依赖关系或异常告诉你这种关系;我找不到任何描述库的正确组合的查找,交叉引用或表。
  • “只使用最新版本”理论不起作用,因为在过去他们已经发布了没有工作模拟器的新版本的Storage Client库(3.0.0.0),现在每个版本的“最新版本”分别依赖于哪个SDK可用于您的构建环境(VS2012 vs VS2015)

我知道存储客户端库在技术上并不依赖于模拟器...您不需要模拟器来使用Azure存储。但是,如果这些关系中的一些对于像我这样的软件来说更容易理解,那就太好了。


1
投票

对我来说,升级到目前最新的WindowsAzure.Storage version 9.3.1软件包后,我遇到了这个问题。

经过几个小时尝试容器名称和其他东西的各种组合,最简单的解决方案是回滚到旧的和工作version 8.6.0


0
投票

如果我没弄错的话,您还需要将客户端库降级到4.x.

您看,每个版本的存储客户端库对应一个存储服务REST API版本,同样适用于存储模拟器。如果您使用存储模拟器4.0版,则无法使用存储客户端库5。您需要使用版本4.x。

如果要使用存储客户端库版本5,则有2个选项:

  1. 使用最新版本的存储模拟器或
  2. 针对云存储帐户进行开发。
© www.soinside.com 2019 - 2024. All rights reserved.