我尝试将新的IHttpClientFactory
与ASP.net Core 2.1 WEB API应用程序一起使用。
public void ConfigureServices(IServiceCollection services)
{
// other services configuration
services.AddHttpClient();
}
在我的ConfigureServices
方法中,我看不到添加IHttpClientFactory
并将其配置为使用WinHttpHandler
的方法。
返回AddHttpClient
的{{1}}方法可让您访问配置IHttpClientBuilder
的方法,但这些方法必须来自HttpMessageHandler
但DelegatingHandler
不是来自WinHttpHandler
。
在构建时,无法告诉DelegatingHandler
使用HttpClient
。
答案 0 :(得分:3)
想出来。
感谢@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