ADLS Gen 2 Storage API - отказ от Http-глаголов

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

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

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

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

Сбой вызова с кодом состояния 400 (указанная HTTP-команда недействительна - она ​​не распознается сервером.): DELETE 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-версия: 2018-11-09

И, наконец, мой Get Properties тоже не работает.

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

Кажется, это происходит только тогда, когда я добавляю каталоги в файловую систему.

Подробнее:

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

ВЫПОЛНИТЕ https://myadls.dfs.core.windows.net/c79b0781?resource=filesystem
ПОЛУЧИТЬ https://myadls.dfs.core.windows.net/c79b0781?recursive=false&resource=filesystem
УДАЛИТЬ https://myadls.dfs.core.windows.net/c79b0781?resource=filesystem

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

ВЫПОЛНИТЕ https://myadls.dfs.core.windows.net/c79b0781?resource=filesystem
ПОСТАВИТЬ https://myadls.dfs.core.windows.net/c79b0781/abc/123?resource=directory

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

ПОЛУЧИТЬ https://myadls.dfs.core.windows.net/c79b0781?recursive=false&resource=filesystem

Если присмотреться к моему запросу на создание каталога, он выглядит так:

ВЫПОЛНИТЕ https://myadls.dfs.core.windows.net/c79b0781/abc/123?resource=directory

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

Авторизация: [опущена]
Content-Length: 0

И я могу видеть папки в Storage explorer, я просто не могу с ними работать после этого момента.

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

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

Тест 1 (успешно)

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

Тест 2 (неудачный)

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

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


person Josh    schedule 25.10.2019    source источник


Ответы (1)


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

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

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

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

person Josh    schedule 28.10.2019