无法将 blob 发送到 Azure - 缺少 HTTP 标头异常

问题描述 投票:0回答:1

我正在尝试将 parquet 文件上传到 Azure,但它不断向我显示一条错误消息,指出它缺少必需的 HTTP 标头。

在我提供的示例中,我只是尝试了内存流中的一些基本数据,但它仍然抛出此异常。

RequestFailedException:为此必需的 HTTP 标头 未指定请求。 请求ID:0bd87df1-701f-0003-5ff4-944ccd000000 时间:2024-04-22T20:36:16.2840714Z 状态:400(HTTP 标头 未指定此请求的强制要求。)错误代码: 缺少必需的标头

内容:{“错误”:{“代码”:“MissingRequiredHeader”,“消息”:“HTTP 此请求的强制标头不是 指定的。 请求编号:... 时间:2024-04-22T20:36:16.2840714Z"}}

标头:连接:保持活动 x-ms-错误代码:MissingRequiredHeader x-ms-请求-id:... x-ms-版本: 2024-05-04 x-ms-客户端-请求 ID: ... 内容长度:204 内容类型: application/json;charset=utf-8 日期:2024 年 4 月 22 日星期一 20:36:16 GMT 服务器:Windows-Azure-HDFS/1.0 Microsoft-HTTPAPI/2.0 通过:已编辑

代码:

            string storageAccountName = "name";
            string storageAccountKey = "key";
            StorageSharedKeyCredential sharedKeyCredential = new StorageSharedKeyCredential(storageAccountName, storageAccountKey);

            BlobServiceClient blobServiceClient = new BlobServiceClient(
                new Uri("https://" + storageAccountName + ".dfs.core.windows.net"),
                sharedKeyCredential
            );

            BlobContainerClient desContainer = blobServiceClient.GetBlobContainerClient("testcontainer");

            BlobClient desBlob = desContainer.GetBlobClient("/testAPI/my.parquet");

            var myStr = "Hello!";
            var content = Encoding.UTF8.GetBytes(myStr);
            using (var ms = new MemoryStream(content))
                desBlob.Upload(ms);

我无法找到缺少的标头,并且我不确定如何添加它们,因为除此之外似乎没有添加标头的标准方法;内容类型

套餐:

  • Azure.Core - 1.39.0
  • Azure.Storage.Blob - 12.20.0-beta.2
  • Azure.Storage.Common - 12.19.0-beta.2

我尝试恢复到较旧的软件包,认为功能可能以前就存在,但在最近的修订中发生了变化。

任何正确方向的帮助都会有所帮助。

c# azure azure-blob-storage parquet
1个回答
0
投票

如评论中所述,请将端点后缀从

dfs.core.windows.net
更改为
blob.core.windows.net
。我的猜测是,当 REST API 看到
dfs.core.windows.net
端点时,它会尝试使用 Data Lake REST API 而不是 Blob Storage REST API,因此,您会收到丢失标头错误。

© www.soinside.com 2019 - 2024. All rights reserved.