8

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

4

4 回答 4

15

就我而言,问题出在Container Name上,它有严格的命名要求。

即:

  • 只允许使用小写字母、数字和破折号
  • 必须为 3 到 63 个字符

有关详细信息,请查看MSDN 上的命名和引用容器、Blob 和元数据。

于 2016-05-25T17:43:36.170 回答
7

我不知道这是否对其他人来说是个问题,但这就是我想出来的......

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

.

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

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

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

于 2015-09-03T13:38:49.510 回答
1

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

经过数小时尝试容器名称和其他内容的各种组合后,最简单的解决方案是回滚到旧版本并正常工作version 8.6.0

于 2018-08-25T15:02:13.813 回答
0

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

您会看到,每个版本的存储客户端库都对应一个存储服务 REST API 版本,存储模拟器也是如此。如果您使用存储模拟器 4.0 版,则不能使用存储客户端库 5。您需要使用 4.x 版本。

如果您想使用存储客户端库版本 5,那么您有 2 个选项:

  1. 使用最新版本的存储模拟器或
  2. 针对云存储帐户进行开发。
于 2015-09-02T03:21:35.930 回答