我正在try 将拼花文件上传到Azure,但它不断向我提供错误消息,称其缺少所需的HTTP标头.

在我提供的示例中,我刚刚try 了内存流中的一些基本数据,但它仍然会引发这个异常.

请求失败异常:为此必须的HTTP标头 未指定请求. 请求ID:0 bd 87 df 1 - 701 f-0003- 5 ff 4 - 944 ccd 00000 时间:2024-04- 22 T20:36:16.2840714Z状态:400(一个是 未指定此请求的强制性内容.)错误代码: 失踪的redHeader

内容:{"错误":{"代码":"MissingDeliveredHeader","消息":"一个HTTP 此请求强制的标头不是 指定.\ n请求ID:.\ n时间:2024-04- 22 T20:36:16.2840714Z '}

标头:连接:keep-alive x-ms-error-code:MissingDeliverredHeader x-ms-请求-id:.. x-ms-版本: 2024-05-04 x-ms-client-请求-id: ...内容长度:204内容类型: 应用程序/json;charset=utf-8日期:2024年4月22日星期一20:36:16 GMT 服务器:Windows-Azure-HDFS/1.0 Microsoft-HTTPAPI/2.0通过:RECTED

代码 :

            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.Blobs — 12.20.0—beta.2
  • Azure.存储.Common - 12.19.0-beta.2

我曾try 恢复到旧的包,以为功能以前就存在,但在最近的修订版中发生了变化.

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

推荐答案

如 comments 中提到的,请将端点后缀从dfs.core.windows.net更改为blob.core.windows.net.我的猜测是,当REST API看到dfs.core.windows.net个端点时,它会try 使用Data Lake REST API而不是Bloc Store REST API,因此,您会收到丢失的标头错误.

Csharp相关问答推荐

Autofac:如何防止丢弃通过ServicCollection注册的服务?

如何将ref T*重新解释为ref nint?

C#使用属性和值将JSON转换为XML

获取ASP.NET核心身份认证cookie名称

.NET 8 Web-API返回空列表

选取器与.NET Maui MVVM的绑定属性

MongoDB.NET-将数据绑定到模型类,但无法读取整数值

如何在不考虑年份的情况下判断日期时间是否在某个日期范围内?

如何使datagridview的列具有响应性,以便不是所有列都更改其宽度

mocking对象的引发事件并作为用于调用方法的参数对象传递到那里

用C#调用由缓冲区指针参数组成的C API

Amazon SP-API确认发货不设置&Quot;递送服务

如何在NET 8最小API中自动记录TypedResults.Stream响应

为什么AggregateException的Catch块不足以处理取消?

依赖项注入、工厂方法和处置困境

HttpClient SendAsync与多线程环境中的ArchiveZip

如何强制新设置在Unity中工作?

嵌套Blazor组件内的验证

为什么Visual Studio 2022建议IDE0251将我的方法设置为只读?

如果图表S批注包含使用LINQ的具有特定名称的批注,我如何签入C#