使用 .NET 4.6.2 中的 HttpClientFactory(Use HttpClientFactory from .NET 4.6.2)
Net from use 4.6 使用
2023-09-11 14:15:05 时间
有一个 .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。
您需要添加 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); } }
【问题】:
-
如果循环 Test(),它会创建多个客户端实例
-
是的,但是如果您在此方法之外注册 serviceProvider,那么每个
var client = httpClientFactory.CreateClient();
都会返回相同的客户端 -
HttpClient 可以创建多次也没关系。 HttpMessageHandler 会被复用,只要你使用同一个工厂实例,这是这里的重要部分。
-
改:
class Program { static IHttpClientFactory httpClientFactory ; static void Main(string[] args) { var serviceProvider = new ServiceCollection().AddHttpClient().BuildServiceProvider(); httpClientFactory = serviceProvider.GetService<IHttpClientFactory>(); Test(); Console.Read(); } static async void Test() { 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 Core 部署到 CentOS7 64 位系统中的步骤
- ASP.NET Core开源任务调度框架Hangfire实战演练
- .NET 开源Protobuf-net从入门到精通
- ASP.NET cache缓存的用法
- 《ASP.NET MVC4 WEB编程》学习笔记------.net mvc实现原理ActionResult/View
- C#.NET常见问题(FAQ)-在VS程序如何取消.vshost的进程
- .NET插件系统之二——不实例化获取插件信息和可视化方法
- Asp.Net Web API 2第十八课——Working with Entity Relations in OData
- Asp.Net Web API 2第十三课——ASP.NET Web API中的JSON和XML序列化
- Asp.Net Web API 2第三课——.NET客户端调用Web API
- FreeBSD修改root密码错误passwd: pam_chau(www.111cn.net)thtok(): error in service module from:http://www.111cn.net/sys/freebsd/66713.htm
- ASP.NET Session丢失问题原因及解决方案[转]
- hbuilder mui uploader图片上传到服务器完整版(ASP.NET)
- Asp.net程序中为IIS新建用户
- .NET 日期与时间类System.DateTime
- ASP.NET Core应用基本编程模式[3]:配置多种使用形式
- How to debug .NET Core RC2 app with Visual Studio Code on Windows?
- Spire.Office .NET 7.10.0!!!!!Spire.Office for Java 7.10.1
- ASP.NET Web Forms - HTML 表单
- 已解决WARNING:tensorflow:From <stdin>1: is_gpu_available (from tensorflow.python.framework.test_util) i
- java.net.ConnectException: Call From slaver1/192.168.19.128 to slaver1:8020 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org
- 英文拼写检查:TX Spell .NET for .NET 10.0 Crack
- Neodynamic EPLPrinter SDK 2.0 for .NET Crack
- VB.net:VB.net编程语言学习之基于VS软件连接SQL Server(利用ADO.NET操作数据库/添加新数据源/DataGridView数据表格控件)的简介、案例应用之详细攻略
- docker: Error response from daemon: Get “https://registry-1.docker.io/v2/“: net/http: TLS handshake
- ADO.NET入门教程(八) 深入理解DataAdapter(上)