.Net Core 3.1 - HTTP 请求 - 分别发送 header 和 body

.Net Core 3.1 - HTTP request - Send header and body separately

我使用的是旧版服务器,它要求 HTTP POST 请求中的 header 和 body 分开发送。我想这是通过 'Expect: 100-continue' 实现的,它存在于遗留的客户端消息 header.

我正在使用 Net Core 3.1 编写新客户端,它似乎不支持 HttpWebRequest 中的 Expect100Continue class(根据:https://github.com/dotnet/runtime/issues/25881

有没有可能用 Net Core 3.1 发送 HTTP 请求,body 和 header 分开?

快速解决方案是使用

关闭网络核心的 HTTP 处理程序
AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", false);

此切换后,将使用 .net 框架中的处理程序。看起来 SocketsHttpHandler(至少与 HttpWebRequest 结合使用)不支持分离的 headers 和正文,即使使用 HTTP 1.0 也是如此。

https://docs.microsoft.com/en-us/dotnet/api/system.appcontext.setswitch?view=netcore-3.1