作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将新的 IHttpClientFactory
与 ASP.net Core 2.1 WEB API 应用程序一起使用。
public void ConfigureServices(IServiceCollection services)
{
// other services configuration
services.AddHttpClient();
}
在我的 ConfigureServices
方法中,我没有看到添加 IHttpClientFactory
并将其配置为使用 WinHttpHandler
的方法。
返回 IHttpClientBuilder
的 AddHttpClient
方法使您可以访问配置 HttpMessageHandler
的方法,但这些方法必须从 派生DelegatingHandler
但 WinHttpHandler
不是从 DelegatingHandler
派生的。
没有办法告诉 HttpClient
在构造时使用 WinHttpHandler
。
最佳答案
想通了。
感谢@Nkosi 在评论中给出的提示!
我通过在注册 HttpClient
服务时使用命名的 HttpClient
解决了这个问题,然后将消息处理程序配置为使用 WinHttpHandler
作为 PrimaryHandler
services.AddHttpClient<HttpClient>("WinHttp")
.ConfigureHttpMessageHandlerBuilder(c =>
{
c.PrimaryHandler = new WinHttpHandler() { WindowsProxyUsePolicy = WindowsProxyUsePolicy.UseWinInetProxy };
});
然后在使用 IHttpClientFactory
时,指定您在注册时提供的名称。
var httpClient = this._httpClientFactory.CreateClient("WinHttp");
您的 HttpClient
现在将使用 WinHttpHandler
!
注意要使用 WinHttpHandler,您必须添加 nuget 包 System.Net.Http.WinHttpHandler
关于c# - 如何在 core2.1 中使用 WinHttpHandler 和 IHttpClientFactory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50762087/
我是一名优秀的程序员,十分优秀!