Хранилище таблиц стека Azure: значение для заголовков HTTP не в правильном формате
Я пытаюсь получить доступ к хранилищу данных лазурного стека. Следующие инструкции работают:
BlobClient = StorageAccount.CreateCloudBlobClient();
CloudBlobContainer myContainer = BlobClient.GetContainerReference("mycontainer");
Но происходит сбой при создании Blob через myContainer.CreateIfNotExists()
:
... StatusMessage: значение для одного из заголовков HTTP имеет неправильный формат.\ R \n ErrorCode:\r\nErrorMessage: значение для одного из заголовков HTTP имеет неправильный формат.\ N RequestId:"hiddenId"...
Поведение точно так же для очередей и таблиц.
Я попробовал библиотеку "Microsoft.WindowsAzure.Storage" в более старой версии 7.2.1, версии 8.7 и текущей версии 9.1. (8.7 должно быть хорошо с этой документацией. Другая документация даже утверждает, что каждая версия между 6.2.0 и 8.7.0 должна быть совместимой. 9.1 точно не поддерживается.) В конце концов, это всегда вышеупомянутая ошибка.
Код работает нормально при нацеливании на общедоступные хранилища Azure вместо хранилищ стека Azure.
2 ответа
Так что я наконец нашел решение с любезной поддержкой Microsoft.
Это действительно была проблема с версиями, которую можно понять, если правильно понять эту документацию.
Я использую версию Azure Stack 1.0.180103.2
, Это внутренний номер версии, который означает, что он был создан 3 января 2018 года. Это относится к версии 1801 в схеме управления версиями, используемой в документации.
Версия API 8.7 действительна только с 1802 года. Поэтому я должен взглянуть на нижнюю часть этой страницы документации в разделе "предыдущий". И там видно, что мне нужно вернуться в библиотеку "Microsoft.WindowsAzure.Storage" 6.2. С помощью этой библиотеки это работает.
Эта ошибка может быть результатом, если BlobRequestOptions и OperationContext не были установлены. Не могли бы вы предоставить значения для обоих, а затем проверить еще раз? Документацию можно найти здесь: https://docs.microsoft.com/en-us/dotnet/api/microsoft.windowsazure.storage.blob.cloudblobcontainer.createifnotexists?redirectedfrom=MSDN&view=azure-dotnet