【问题标题】:ADLS Gen 2 Storage API - Refusing Http VerbsADLS Gen 2 Storage API - 拒绝 Http 动词
【发布时间】:2020-02-21 22:32:51
【问题描述】:

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

带有标题:

授权:[省略]
内容长度:0

我可以在存储资源管理器中看到这些文件夹,但在此之后我无法对它们进行操作。

测试用例 2

我已经开始了一条路,想知道它是否是权限。因此,我通过 Azure 存储资源管理器创建了一个新的文件系统,其中包含 abc/def 文件夹结构。

测试 1(通过)

获取目录“abc”的列表
获取目录“abc/def”的列表

测试 2(失败)

创建目录“uvw/xyz”
获取目录“abc”的列表此处失败
获取目录“abc/def”的列表
获取目录“uvw/xyz”的列表

一旦我通过 api 创建目录,就好像整个文件系统开始拒绝所有 HTTP 请求。

【问题讨论】:

    标签: azure-storage azure-data-lake-gen2


    【解决方案1】:

    这个错误最终导致我陷入了我用于执行休息请求的 Flurl 实现中。

    Put 方法没有正文,调用 PutJsonAsync 其中 according to the spec,它期望内容类型为 application/octet-stream,内容长度为 0。

    我将对PutJsonAsync 的调用替换为PutAsync,然后一切都神奇地开始工作了。

    因此,由于我在包装器代码中的误用,Flurl 本身似乎存在一些导致此问题的错误。

    【讨论】:

      猜你喜欢
      • 2020-07-25
      • 1970-01-01
      • 1970-01-01
      • 2021-01-01
      • 2018-04-23
      • 1970-01-01
      • 2020-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多