c# - 如何使 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 请求似乎是在没有池用户的情况下发出的,尽管有文档..
有人做过这样的事情吗?
解决方案
我不确定这是否是您的问题,但此Microsoft 文档指出,从核心 2.1 开始,System.Net.Http.SocketsHttpHandler
改为使用该类。
它包含有关如何配置以允许继续使用的信息,HttpClientHandler
但您可能想要切换甚至尝试使用HttpMessageHandler
来代替您当前用于处理程序的类型。
推荐阅读
- html - 如何使用输入字段中的值复制整个 HTML 页面正文
- java - 如何在 2 个不同的 EditText 中设置 1 个时间选择器?
- unity3d - Unity - 加载场景后设置玩家位置
- javascript - 如何使用jQuery在当前页面上向父元素添加类
- c# - 当客户端无法验证证书时,C# SslStream 无法进行身份验证
- python - Azure Data Lake - 使用可用的凭据密钥生成*连接字符串*
- python - 通过 Google Drive API 的链接将 Google Doc 设置为可供所有人共享和编辑
- sql - Impala Last_Value() 未按预期给出结果
- javascript - 将状态数据传递到产品详细信息页面
- xcode - xcodebuild 解决依赖关系,但无法导入包