Azure Stack Table 存储:HTTP headers 的值格式不正确

Azure Stack Table Storage: Value for HTTP headers not in correct format

我正在尝试访问 azure 堆栈的数据存储。以下说明有效:

BlobClient = StorageAccount.CreateCloudBlobClient();
CloudBlobContainer myContainer = BlobClient.GetContainerReference("mycontainer");

但是当通过 myContainer.CreateIfNotExists():

创建 Blob 时它崩溃了

...StatusMessage:The value for one of the HTTP headers is not in the correct format.\r\n ErrorCode:\r\nErrorMessage:The value for one of the HTTP headers is not in the correct format.\n RequestId:"hiddenId"...

Queues 和表格的行为完全相同。

我在旧版本 7.2.1、8.7 和当前版本 9.1 中尝试了 "Microsoft.WindowsAzure.Storage" 库。 (8.7 应该没问题this documentation. Another documentation 甚至说,6.2.0 和8.7.0 之间的每个版本都应该兼容。9.1 肯定不支持。)最后总是上面的错误。

代码在针对 public Azure 存储而不是 Azure Stack 存储时运行良好。

如果未设置 BlobRequestOptionsOperationContext 可能会导致此错误,您能否为两者提供值然后再次检查?可以在此处找到文档:https://docs.microsoft.com/en-us/dotnet/api/microsoft.windowsazure.storage.blob.cloudblobcontainer.createifnotexists?redirectedfrom=MSDN&view=azure-dotnet#overloads

所以在微软的大力支持下,我终于找到了解决方案。

这确实是一个版本控制问题,只有正确理解 this 文档才能发现。

我正在使用 Azure Stack 版本 1.0.180103.2。这是内部版本号,意味着它是在 2018 年 1 月 3 日创建的。这是指版本 1801,在文档中使用的版本控制方案中。

API 8.7 版仅从 1802 年开始有效。所以我必须查看 "previous" 下该文档页面的底部。人们可以看到我必须回到 "Microsoft.WindowsAzure.Storage" 库 6.2。使用这个库它可以工作。