使用 .NET 4.6.2 中的 HttpClientFactory
Use HttpClientFactory from .NET 4.6.2
我有一个 .NET 4.6.2 控制台应用程序(使用 Simple Injector)。我需要调用 HTTP 服务。 运行 遇到直接使用 HttpClient 的问题,我正在尝试改用 HttpClientFactory ( https://github.com/aspnet/HttpClientFactory )。
project/library 是 .NET Standard 2.0,所以它应该是??在 .NET 4.6.2 中工作,但它使用像 IServiceCollection 这样的东西,它只在核心中。
所以我的问题是我可以在非核心应用程序中使用 HttpClientFactory。
所有 Microsoft.Extensions.* 包都以 .NET Standard 2.0 为目标。这意味着如果您将适当的包添加到您的应用程序,您可以使用依赖注入、配置、日志记录 和 HttpClientFactory。
您需要添加Microsoft.Extensions.Http to use HttpClientFactory and Microsoft.Extensions.Http.Polly if you want to use it with Polly
要配置 HttpClientFactory,您必须添加包含接口的 Microsoft.Extensions.DependencyInjection to your "main" project. Microsoft.Extensions.Http package only depends on 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);
}
}
我有一个 .NET 4.6.2 控制台应用程序(使用 Simple Injector)。我需要调用 HTTP 服务。 运行 遇到直接使用 HttpClient 的问题,我正在尝试改用 HttpClientFactory ( https://github.com/aspnet/HttpClientFactory )。
project/library 是 .NET Standard 2.0,所以它应该是??在 .NET 4.6.2 中工作,但它使用像 IServiceCollection 这样的东西,它只在核心中。
所以我的问题是我可以在非核心应用程序中使用 HttpClientFactory。
所有 Microsoft.Extensions.* 包都以 .NET Standard 2.0 为目标。这意味着如果您将适当的包添加到您的应用程序,您可以使用依赖注入、配置、日志记录 和 HttpClientFactory。
您需要添加Microsoft.Extensions.Http to use HttpClientFactory and Microsoft.Extensions.Http.Polly if you want to use it with Polly
要配置 HttpClientFactory,您必须添加包含接口的 Microsoft.Extensions.DependencyInjection to your "main" project. Microsoft.Extensions.Http package only depends on 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);
}
}