Tes*_*t45 20 dotnet-httpclient .net-core
我有一个.NET 4.6.2控制台应用程序(使用Simple Injector).我需要调用HTTP服务.直接使用HttpClient遇到问题,我正在尝试使用HttpClientFactory(https://github.com/aspnet/HttpClientFactory).
项目/库是.NET Standard 2.0所以它应该?? 在.NET 4.6.2中工作,但它使用像IServiceCollection这样的东西,它只在Core中.
所以我的问题是我可以在非核心应用程序中使用HttpClientFactory.
Pan*_*vos 26
所有Microsoft.Extensions.*包都以.NET Standard 2.0为目标.这意味着如果向应用程序添加适当的包,则可以使用依赖注入,配置,日志记录和 HttpClientFactory.
如果要与Polly一起使用,则需要添加Microsoft.Extensions.Http以使用HttpClientFactory和Microsoft.Extensions.Http.Polly
要配置HttpClientFactory,您必须将Microsoft.Extensions.DependencyInjection添加到"main"项目中.Microsoft.Extensions.Http包仅依赖于包含接口的Microsoft.Extensions.DependencyInjection.Abstractions,而不是DI提供程序本身.
如@Panagiotis Kanavos所说,您需要添加Microsoft.Extensions.Http和Microsoft.Extensions.DependencyInjection。这是我的ConsoleApp代码,您可以参考它。
class Program
{
static void Main(string[] args)
{
Test();
Console.Read();
}
static async void Test()
{
var serviceProvider = new ServiceCollection().AddHttpClient().BuildServiceProvider();
var httpClientFactory = serviceProvider.GetService<IHttpClientFactory>();
var client = httpClientFactory.CreateClient();
var response = await client.SendAsync(new HttpRequestMessage(HttpMethod.Get, "http://www.baidu.com"));
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9495 次 |
| 最近记录: |