Sam*_*Sam 4 asp.net-core .net-standard-2.0 httpclientfactory
IHttpClientFactory新的ASP.NET Core 2.1中有一个非常酷的功能,
https://www.hanselman.com/blog/HttpClientFactoryForTypedHttpClientInstancesInASPNETCore21.aspx
我正在尝试在ASP.NET Core 2.1 Preview-2应用程序中使用此功能,但是我需要HttpClient在.NET Standard 2.0中的类库中使用。
有一次,我执行AddHttpClient中ConfigureServices()的Startup.cs,我怎么通过这个HttpClientFactory或命名具体HttpClient到我在.NET 2.0标准类库创建的API客户端?该客户端几乎可以处理我对第三方的所有API调用。
基本上,我只是想将特定的名称添加HttpClient到我的中thirdPartyApiClient。
这是我的代码ConfigureServices():
public void ConfigureServices(IServiceCollection services)
{
// Create HttpClient's
services.AddHttpClient("Api123Client", client =>
{
client.BaseAddress = new Uri("https://api123.com/");
client.DefaultRequestHeaders.Add("Accept", "application/json");
});
services.AddHttpClient("Api4567Client", client =>
{
client.BaseAddress = new Uri("https://api4567.com/");
client.DefaultRequestHeaders.Add("Accept", "application/json");
});
}
Run Code Online (Sandbox Code Playgroud)
首先,您的库类的构造函数应带有一个HttpClient参数,以便您可以HttpClient向其中注入一个。然后,最简单的方法(在链接文章中也提到了它的价值)是HttpClient为该库类添加一个特定的:
services.AddHttpClient<MyLibraryClass>(...);
Run Code Online (Sandbox Code Playgroud)
然后,当然,如果尚未注册,请注册您的库类以进行注入:
services.AddScoped<MyLibraryClass>();
Run Code Online (Sandbox Code Playgroud)
然后,当实例化您的库类以将其注入到某物时,它也将随HttpClient您为其指定的注入。
或者,您可以HttpClient通过以下方式手动指定要插入的实例:
services.AddScoped(p => {
var httpClientFactory = p.GetRequiredService<IHttpClientFactory>();
return new MyLibraryClass(httpClientFactory.Create("Foo"));
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3592 次 |
| 最近记录: |