CodeGo.net>如何在Core2.1的IHttpClientFactory使用WinHttpHandler的?
作者:互联网
我正在尝试将新的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
标签:asp-net-core-2-1,asp-net-core,c 来源: https://codeday.me/bug/20191108/2010530.html