Azure App 网关未将身份验证 header 传递到后端池

Azure App gateway not passing authentication header to back end pool

我们在 Azure VM(IIS) 上有一个经典的 asp.net web API 服务 运行,它在 azure 应用程序网关中配置为后端池,API 服务 运行 windows NTLM 身份验证(以支持某些向后兼容性和对遗留组件的依赖)。 API 中的控制器之一用于上传服务。当我直接通过应用程序网关端点使用 Insomnia/postman 调用服务时,它工作正常。
但是当我试图通过 .Net 核心客户端应用程序使用相同的应用程序网关端点时。它总是未经授权。应用程序网关未将 NTLM header 发送到后端池

这是我用来消费服务的客户端代码

在对应用程序网关和 IIS 日志的问题进行了一整天的挖掘之后。最后,我能够弄清楚这个问题。问题主要与 .Net Core HttpClient 有关。 使用多部分表单数据调用 PostAsync 方法时,HttpClient 未能发送 NTLM header 详细信息。因此,在禁用 SocketsHttpHandler

后,我必须按以下方式使用 SendAsync 方法,而不是调用 PostAsync