Azure 存储模拟器 400 错误请求
Azure Storage Emulator 400 Bad Request
我在尝试 CreateIfNotExists 时使用 Azure 存储模拟器时突然收到错误请求 (400)。对内部异常的响应说 "The value for one of the HTTP headers is not in the correct format." 所有表都存在,数据在表中,一切正常,直到更新我的 NuGet 包。环顾四周,似乎一个常见的原因是对 Azure 存储客户端库(现在为 5.0.0)的更新造成了不匹配。我将 Azure SDK 更新为 2.6(因为我有 VS2012)。这将存储模拟器升级到 4.0.0.0,但仍然没有运气......同样的错误。这是一件坏事,突然更新一个包的包导致整个包崩溃并完全杀死我相当大的项目。有任何想法吗?
如果我没记错的话,您还需要将客户端库降级到 4.x。
你看,存储客户端库的每个版本都对应一个存储服务 REST API 版本,存储模拟器也是如此。如果您使用存储模拟器 4.0 版,则不能使用存储客户端库 5。您需要使用 4.x 版本。
如果您想使用存储客户端库版本 5,那么您有 2 个选择:
- 使用最新版本的存储模拟器或
- 针对云存储帐户进行开发。
我不知道这对其他人来说是否是个问题,但这是我发现的...
- 存储模拟器 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。我不知道 Storage Client Library 兼容什么...我尝试了 4.3.0.0、5.0.0.0 和 5.0.2,但没有成功
。
我对这整件事的 "philosophical" 问题是...
- 我找不到存储模拟器之间的明显联系
版本和存储客户端库版本....数字不
"match";没有错误、依赖项或异常说明
你的关系;我找不到任何查找、交叉引用或
table 描述了库的正确组合。
- "just use the latest version" 理论不成立,因为在
过去他们发布了新版本的 Storage Client 库
(3.0.0.0) w/o 一个可用的模拟器,现在 "latest version" 每个
分别取决于您的构建可用的 SDK
环境(VS2012 与 VS2015)
我知道存储客户端库在技术上不在模拟器上 "dependent"...您不需要模拟器来使用 Azure 存储。但是,如果这些关系中的一些对于像我这样的软件白痴来说更容易理解就好了。
在我的例子中,问题出在容器名称,它有严格的命名要求。
即:
- Only lowercase letters, numbers, and dash are allowed
- Must be 3 to 63 characters
有关详细信息,请查看 MSDN 上的 Naming and Referencing Containers, Blobs, and Metadata。
对我来说,我在升级到当前最新的 WindowsAzure.Storage version 9.3.1
软件包后遇到了这个问题。
在尝试了容器名称和其他东西的各种组合数小时后,最简单的解决方案是回滚到旧的和工作的 version 8.6.0
!
我在尝试 CreateIfNotExists 时使用 Azure 存储模拟器时突然收到错误请求 (400)。对内部异常的响应说 "The value for one of the HTTP headers is not in the correct format." 所有表都存在,数据在表中,一切正常,直到更新我的 NuGet 包。环顾四周,似乎一个常见的原因是对 Azure 存储客户端库(现在为 5.0.0)的更新造成了不匹配。我将 Azure SDK 更新为 2.6(因为我有 VS2012)。这将存储模拟器升级到 4.0.0.0,但仍然没有运气......同样的错误。这是一件坏事,突然更新一个包的包导致整个包崩溃并完全杀死我相当大的项目。有任何想法吗?
如果我没记错的话,您还需要将客户端库降级到 4.x。
你看,存储客户端库的每个版本都对应一个存储服务 REST API 版本,存储模拟器也是如此。如果您使用存储模拟器 4.0 版,则不能使用存储客户端库 5。您需要使用 4.x 版本。
如果您想使用存储客户端库版本 5,那么您有 2 个选择:
- 使用最新版本的存储模拟器或
- 针对云存储帐户进行开发。
我不知道这对其他人来说是否是个问题,但这是我发现的...
- 存储模拟器 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。我不知道 Storage Client Library 兼容什么...我尝试了 4.3.0.0、5.0.0.0 和 5.0.2,但没有成功
。
我对这整件事的 "philosophical" 问题是...
- 我找不到存储模拟器之间的明显联系 版本和存储客户端库版本....数字不 "match";没有错误、依赖项或异常说明 你的关系;我找不到任何查找、交叉引用或 table 描述了库的正确组合。
- "just use the latest version" 理论不成立,因为在 过去他们发布了新版本的 Storage Client 库 (3.0.0.0) w/o 一个可用的模拟器,现在 "latest version" 每个 分别取决于您的构建可用的 SDK 环境(VS2012 与 VS2015)
我知道存储客户端库在技术上不在模拟器上 "dependent"...您不需要模拟器来使用 Azure 存储。但是,如果这些关系中的一些对于像我这样的软件白痴来说更容易理解就好了。
在我的例子中,问题出在容器名称,它有严格的命名要求。
即:
- Only lowercase letters, numbers, and dash are allowed
- Must be 3 to 63 characters
有关详细信息,请查看 MSDN 上的 Naming and Referencing Containers, Blobs, and Metadata。
对我来说,我在升级到当前最新的 WindowsAzure.Storage version 9.3.1
软件包后遇到了这个问题。
在尝试了容器名称和其他东西的各种组合数小时后,最简单的解决方案是回滚到旧的和工作的 version 8.6.0
!