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

时间:2019-05-13 14:08:36

标签: 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.AddHttpClient("myOtherSite", httpClient => {
                httpClient.BaseAddress = new Uri("http://something");
            })
            .ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler {
                UseDefaultCredentials = true
            });

然后,我只需要在需要客户端的地方注入IH​​ttpBuilder,然后调用clientBuilder.buildClient(“ myOtherSite”)。

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

有人做了这样的事情吗?

1 个答案:

答案 0 :(得分:1)

我不确定这是否是您的问题,但是此Microsoft Documentation指出从核心2.1开始,将使用System.Net.Http.SocketsHttpHandler类。

它包含有关如何配置以允许继续使用HttpClientHandler的信息,但是您可能希望切换甚至尝试使用HttpMessageHandler来代替当前用于处理程序的类型。< / p>