首页 > 解决方案 > 如何使 HttpClient 使用应用程序池标识

问题描述

我正在尝试使用网站 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 请求似乎是在没有池用户的情况下发出的,尽管有文档..

有人做过这样的事情吗?

标签: c#.net-coreasp.net-core-2.2

解决方案


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

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


推荐阅读