新的ASP.NET Core 2.1中有一个非常酷的IHttpClientFactory
功能
https://www.hanselman.com/blog/HttpClientFactoryForTypedHttpClientInstancesInASPNETCore21.aspx
我试图在我的ASP.NET Core 2.1 Preview-2应用程序中使用此功能,但我需要使用.NET Standard 2.0中的类库中的HttpClient
我在AddHttpClient
的{{1}}中执行ConfigureServices()
后,如何将此Startup.cs
或特定的HttpClientFactory
传递给我在其中创建的API客户端我的.NET Standard 2.0类库?这个客户端几乎处理我向第三方发出的所有API调用。
基本上,我只是想将特定的HttpClient
命名为HttpClient
。
这是thirdPartyApiClient
中的代码:
ConfigureServices()
答案 0 :(得分:13)
如今,有一个NuGet软件包Microsoft.Extensions.Http
,它将IHttpClientFactory提供给.NET Standard 2.0
答案 1 :(得分:6)
首先,您的图书馆班级'构造函数应该使用HttpClient
参数,因此您可以向其中注入HttpClient
。然后,最简单的方法(在链接文章中提到它以及它的价值)就是为该库类添加一个特定的HttpClient
:
services.AddHttpClient<MyLibraryClass>(...);
然后,当然,如果您还没有注册您的图书馆类注射:
services.AddScoped<MyLibraryClass>();
然后,当您的库类被实例化以注入某些内容时,它也将被注入您为其指定的HttpClient
。
或者,您可以通过以下方式手动指定要注入的HttpClient
实例:
services.AddScoped(p => {
var httpClientFactory = p.GetRequiredService<IHttpClientFactory>();
return new MyLibraryClass(httpClientFactory.Create("Foo"));
});