API хранилища ADLS Gen 2 - Отказ от команд Http - PullRequest
1 голос
/ 25 октября 2019

У меня проблема с некоторыми конечными точками в ADLS Gen 2 API Операции с путями.

Я могу отлично создавать, перечислять, получать свойства и удалять файловые системы.

Однако после добавления каталога в файловую систему некоторые глаголы дают сбой - HEAD, GET и DELETE.

Например, я создал файловую систему с именем c79b0781 с путем к каталогуиз abc / def

Ошибка вызова с кодом состояния 400 (указанный глагол HTTP недействителен - он не распознается сервером.): УДАЛИТЬ https://myadls.dfs.core.windows.net/c79b0781/abc?recursive=true&timeout=30

Для заголовков у меня есть:

x-ms-версия: 2018-11-09

Я могу удалить файловую систему из проводника хранилища Azure, но APIотклоняя мой запрос.

Действие List также завершается схожей ошибкой

Ошибка вызова с кодом состояния 400 (указанный глагол HTTP недействителен - он не распознается сервером.): GET https://myadls.dfs.core.windows.net/c79b0781?resource=filesystem&recursive=false&timeout=30

С заголовками:

x-ms-version: 2018-11-09

И, наконец, мои свойства Get также не работают

Ошибка вызова с кодом состояния 400 (указан глагол HTTPнедействителен - он не распознается сервером.): HEAD https://myadls.dfs.core.windows.net/c79b0781?resource=filesystem&timeout=30

Это происходит только при добавлении каталогов в файловую систему.

Aнемного подробнее:

Этот тест работает

PUT https://myadls.dfs.core.windows.net/c79b0781?resource=filesystem
GET https://myadls.dfs.core.windows.net/c79b0781?recursive=false&resource=filesystem
DELETE https://myadls.dfs.core.windows.net/c79b0781?resource=filesystem

Мой второй тест с созданием каталога

PUT https://myadls.dfs.core.windows.net/c79b0781?resource=filesystem
PUT https://myadls.dfs.core.windows.net/c79b0781/abc/123?resource=directory

После этого момента вызовы начинают отклонять HTTPглаголы

GET https://myadls.dfs.core.windows.net/c79b0781?recursive=false&resource=filesystem

Изучение моего запроса на создание каталога ближе, это выглядит так:

PUT https://myadls.dfs.core.windows.net/c79b0781/abc/123?resource=directory

С заголовками:

Авторизация: [опущено]
Длина содержимого: 0

И я вижу папки в проводнике хранилища, я просто не могу действоватьих после этого пункта.

Контрольный пример 2

Я начал путь, задаваясь вопросом, есть ли у него разрешения. Итак, я создал новую файловую систему через обозреватель хранилища Azure со структурой папок abc / def в пределах.

Тест 1 (прохождение)

Получение списка для каталога "abc"
Получить список для каталога "abc / def"

Тест 2 (сбой)

Создать каталог "uvw / xyz"
Получить список для каталога "abc" Сбой здесь
Получить список для каталога "abc / def"
Получить список для каталога "uvw / xyz"

Как только я создаю каталог через API,все файловая система начинает отклонять все HTTP-запросы.

1 Ответ

0 голосов
/ 28 октября 2019

Эта ошибка в итоге привела меня в кроличью нору к моей реализации Flurl, которую я использую для выполнения запросов на отдых.

Метод Put не имел тела и вызывал PutJsonAsync, где согласноspec , он ожидает, что тип контента будет application/octet-stream с длиной контента 0.

Я заменил вызов на PutJsonAsync на PutAsync, и все волшебным образом начало работать.

Итак, похоже, что в самом Flurl есть какая-то ошибка, которая вызвала эту проблему из-за моего неправильного использования в коде оболочки.

...