C# 如何使HttpClient使用应用程序池标识

C# 如何使HttpClient使用应用程序池标识,c#,.net-core,asp.net-core-2.2,C#,.net Core,Asp.net Core 2.2,我正在尝试使用网站A的身份从网站A向网站B进行http呼叫 使用.Net fwk 4.x,我只需要制作如下内容: using (var client = new HttpClient(new HttpClientHandler { UseDefaultCredentials = true }) { // Do something } 在aspnetcore 2.2中,提供了一个IHttpClientBuilder来管理http客户端 同样的代码应该是这样的: services.AddHt

我正在尝试使用网站A的身份从网站A向网站B进行http呼叫

使用.Net fwk 4.x,我只需要制作如下内容:

using (var client = new HttpClient(new HttpClientHandler { UseDefaultCredentials = true }) {
   // Do something
}
在aspnetcore 2.2中,提供了一个IHttpClientBuilder来管理http客户端

同样的代码应该是这样的:

services.AddHttpClient("myOtherSite", httpClient => {
                httpClient.BaseAddress = new Uri("http://something");
            })
            .ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler {
                UseDefaultCredentials = true
            });
然后我只需要在需要客户端的地方注入IHttpBuilder,然后调用clientBuilder.buildClient(“myOtherSite”)

使用这种方法,http请求似乎是在没有池用户的情况下发出的,尽管有文档说明


有人做过类似的事情吗?

我不确定这是否是您的问题,但这说明从core 2.1开始,将使用
System.Net.Http.SocketsHttpHandler


它提供了有关如何配置以允许继续使用
HttpClientHandler
的信息,但您可能希望切换或甚至尝试使用
HttpMessageHandler
来代替当前处理程序使用的类型。

使用的是什么身份?Myothersite会收到匿名呼叫。它与.NET4.7配合得很好,我完全看不出我缺少什么…根据HttpClientHandler,从.NETCore2.1开始,它不再是默认的实现。除非你设置了一个明确的开关,否则它不会被使用。谢谢你的提示!不幸的是,我无法使用SocketsMessageHandler使其工作。刚才在这里问:您是否尝试通过设置上下文开关来强制它使用HttpClientHandler?