其他分享
首页 > 其他分享> > CodeGo.net>如何在Core2.1的IHttpClientFactory使用WinHttpHandler的?

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