2015-09-01 4 views
7

Я неожиданно получаю ошибку Bad Request (400) при использовании эмулятора Azure Storage при попытке CreateIfNotExists. Ответ на внутреннее исключение говорит: «Значение для одного из HTTP-заголовков не в правильном формате». Все таблицы существуют, данные находятся в таблицах, все работает до обновления к моим пакетам NuGet. Оглядываясь вокруг, кажется, что распространенной причиной является обновление для Azure Storage Client Library (теперь в 5.0.0), которое создает несоответствие. Я обновил Azure SDK до версии 2.6 (так как у меня есть VS2012). Это приносит эмулятору хранения до 4.0.0.0, но все равно не повезло ... такая же ошибка. Это отчасти плохо, что внезапно обновление пакета пакета пакета заставляет все это сломать и полностью убивает мой довольно большой проект. Есть идеи?Azure Storage Emulator 400 Неверный запрос

+0

Какую версию библиотеки клиента хранения вы используете в своем проекте? –

+0

5.0.0 Я также пробовал новый предварительный выпуск, но он тоже не работал. – WirelessG

ответ

5

Я не знаю, является ли это проблемой для кого-либо еще, но это то, что я понял, ...

  • хранения Emulator 4.1.0.0 это один для использования с Azure Storage Клиентская библиотека 5.0.0
  • Хранение Эмулятор 4.1.0.0 поставляется с Azure SDK 2.7.
  • Azure SDK 2.7 не будет работать с Visual Studio 2012.
  • Azure SDK 2.6 для VS2012 имеет эмулятор 4.0.0.0. Я не знаю, что совместима с библиотекой клиентских хранилищ ... Я пробовал 4.3.0.0, 5.0.0.0 и 5.0.2, но не повезло

.

Мои «философские» проблемы с этой целой вещью являются ...

  • Я не могу найти различимую связь между Storage Emulator версий и версиями библиотеки хранения Клиента .... Цифры не " совпадение"; нет ошибок, зависимостей или исключений, которые сообщают вам отношения; Я не могу найти таблицу поиска, перекрестных ссылок или таблицу , которая описывает правильную комбинацию библиотек.
  • Теория «просто использовать последнюю версию» не работает, потому что в прошлом они выпустили новые версии библиотеки Client Storage (3.0.0.0) с рабочим эмулятором и теперь «последняя версия» каждый отдельно в зависимости от которых SDK доступен для сборки среды (VS2012 против VS2015)

Я понимаю, что библиотека хранения клиента не является технически «зависимой» на эмуляторе ... Вам не нужно эмулятор для использования Azure Storage.Однако было бы неплохо, если бы некоторые из этих отношений были немного проще для программного обеспечения, как я, чтобы понять.

+2

Похоже, что Storage Client Library 6.0.0 использует версию API REST 2015-04-05, которая поддерживается только в версии эмулятора 4.2. –

+1

У кого-то другого, имеющего ту же самую проблему и ответ от команды Azure, https://github.com/Azure/azure-storage-net/issues/183 - это обновление до версии эмулятора хранилища 4.2. –

0

Если я не ошибаюсь, вам также необходимо будет обновить клиентские библиотеки до 4.x.

Вы видите, что каждая версия клиентской библиотеки хранения соответствует версии REST API хранилища, а также для эмулятора хранилища. Если вы используете эмулятор хранилища версии 4.0, вы не можете использовать библиотеку клиента хранилища 5 с этим. Вам нужно будет использовать версию 4.x.

Если вы хотите использовать клиентское хранилище библиотеки версии 5, то у вас есть 2 варианта: использование

  1. Марка последней версии эмулятора хранения или
  2. Do ваше развитие против счет облачного хранилища.
+0

Эмулятор хранения является частью Azure SDK. Если у вас есть VS2012, тогда SDK равен 2.6. Эмулятор хранения для версии 2.6 - 4.0.0.0. Последняя клиентская библиотека хранения - 5.0.0. Итак, вы говорите, что вам нужно обновить до SDK 2.7 (и, следовательно, VS2015), чтобы получить версию эмулятора, которая работает с Client Library 5.0.0.0? Это похоже на плохую заднюю дверь, чтобы заставить людей обновлять Visual Studio, не зная об этом. – WirelessG

+0

Да. Чтобы использовать последнюю версию эмулятора хранения, вам понадобится последняя версия SDK (2.7), которая поддерживается как на VS 2013, так и на 2015 год (к сожалению, VS 2012, к сожалению). –

+0

Кроме того, изменение библиотеки хранилища клиентов до 4.3.0.0 (для «соответствия» моему эмулятору 4.0.0) также не работает. Никаких исключений, только каждый вызов возвращает молчащий «ложь». – WirelessG

10

В моем случае проблема была с Контейнерное имя, которое имеет строгие требования к именованию.

А именно:

  • Только строчными буквы, цифры и дефис допускаются
  • Должно быть от 3 до 63 символов

Для получения дополнительной информации, вид Naming and Referencing Containers, Blobs, and Metadata на MSDN.

Смежные вопросы