当前位置: 首页 > news >正文

江苏网站建设渠道有关网站备案号规则

江苏网站建设渠道,有关网站备案号规则,搜索网站有哪些,电子商务网站功能页面HttpClient 是 .NET Framework、.NET Core 或 .NET 5以上版本中的一个类,用于向 Web API 发送 HTTP 请求并接收响应。它提供了一些简单易用的方法,如 GET、POST、PUT 和 DELETE,可以很容易地构造和发送 HTTP 请求,并处理响应数据。…

HttpClient 是 .NET Framework、.NET Core 或 .NET 5以上版本中的一个类,用于向 Web API 发送 HTTP 请求并接收响应。它提供了一些简单易用的方法,如 GET、POST、PUT 和 DELETE,可以很容易地构造和发送 HTTP 请求,并处理响应数据。它是我们比较常用的官方HTTP请求组件,那么你们都正确使用了吗?本文将探讨HttpClient的正确使用。

环境准备

首先我们用vs2022创建一个带默认 WeatherForcast 模板的 Web API 应用程序,以及一个普通的API的程序,项目使用的是.NET6。

项目结构如下

 

 

两个项目的功能点:

HttpClientTest - 返回天气预报的Web API

HttpClientTest2 -这个项目将用HttpClient来请求HttpClientTest 的天气预备。

接下来我们用4种方法来说明HttpClient的正确使用方法。

方法1

我们首先在HttpClientTest2 创建HttpClientTestController类,并写一个请求天气预备的方法,代码如下:

namespace HttpClientTest2.Controllers
{[Route("api/[controller]")][ApiController]public class HttpClientTestController : ControllerBase{[HttpGet]public async Task<string> TestHttpClient(){var url = "https://localhost:7281/WeatherForecast";#region 版本1var httpClient = new HttpClient();var response = await httpClient.GetAsync(url);return await response.Content.ReadAsStringAsync();#endregion}}}    

 代码写完后,我们设置多项目启动,让这两个项目同时启动。

 

 

项目启动后,执行项目HttpClientTest2 的TestHttpClient请求接口。多执行几次。主要看看HttpClient后台的执行情况。这里可以用netstat来检查http的请求情况。

打开一个CMD控制台程序。输入如下代码:

netstat -na | find "7281"

7281端口是我们请求站点HttpClientTest。多次点击的效果如下:

 

 

由上面可以看出有多个请求,说明请求未关闭。接下来换第二种方法。

方法2

使用using命令来实现请求结束关闭请求,代码如下:

   #region 版本2using (var httpClient = new HttpClient()){var response = await httpClient.GetAsync(url);return await response.Content.ReadAsStringAsync();}#endregion

 同样我们多次请求,结果如下:

 

在这里可以看到状态“TIME_WAIT”,说明链接已经关闭,但实际情况链接还是占用着端口,在资源耗尽才会释放。这就是套连接的问题,套接字耗尽是指服务器上的可用套接字资源已经全部被占用,无法为新的连接提供服务。在 TCP/IP 网络通信中,每个端口上最多只能建立一个连接,这就限制了服务器可以处理的连接数。当服务器负载过高时,就可能导致套接字资源紧张,进而引发套接字耗尽问题。针对上面问题,继续对HttpClient 改进。

方法3

这里我们使用单例模式试一试。代码如下:

public class HttpClientTestController : ControllerBase{private static HttpClient _httpClient;static HttpClientTestController(){_httpClient = new HttpClient();}//注意:有许多方法可以实现单例模式。在这里使用了静态实例方法。[HttpGet]public async Task<string> TestHttpClient(){var url = "https://localhost:7281/WeatherForecast";#region 版本3//var response = await _httpClient.GetAsync(url);//return await response.Content.ReadAsStringAsync();#endregion}}

 代码编写完成后我们再试一试,结果如下:

 

 

因为使用了单例模式,没有创建新实例使用了相同的连接。这种方法解决了套接字耗尽问题。但是,我们注意到有一个状态为“已建立”的开放连接。如果有DNS更改或与网络相关的更改可能会影响连接,应用程序可能会失败,需要重新启动应用程序才能解决。这个方法也不是最理想的。

方法4

HttpClient是.NET内置方法,这里可以通过使用 IHttpClientFactory 接口来实现,从而避免上面的问题。代码如下:

public class HttpClientTestController : ControllerBase{private readonly IHttpClientFactory _httpClientFactory;public HttpClientTestController(IHttpClientFactory httpClientFactory){_httpClientFactory = httpClientFactory;}[HttpGet]public async Task<string> TestHttpClient(){var url = "https://localhost:7281/WeatherForecast";#region 版本4var httpClient = _httpClientFactory.CreateClient();var response = await httpClient.GetAsync(url);return await response.Content.ReadAsStringAsync();#endregion}

 使用IHttpClientFactory 的话,需要在Program.cs 中注入,代码如下:

builder.Services.AddHttpClient();

 同样多次请求,然后执行netstat命令。效果如下:

 

 

从请求的状态来看,通过使用 _httpClientFactory.CreateClient() 完美解决问题。

总结

本文用四种方法渐进讲述了HttpClient的使用方法以及在使用过程中的问题,最终用IHttpClientFactory解决了出现的问题。希望本文对你有所收获,欢迎留言或者吐槽。

http://www.yayakq.cn/news/885264/

相关文章:

  • 郑州高端定制建设网站网站建设孩子半夜发烧怎么办
  • 外贸网站源码多语言优秀网页设计平台
  • 镇江网站建设推广找思创北京建设网站专家
  • 做网站时的兼容问题免费wordpress主题内容怎么改
  • 天津免费建设网站门户网站怎么做seo
  • 网站建设金手指专业泡芙短视频app在哪里可以赚钱
  • seo营销推广多少钱网站优化排名首页
  • 女生学网站建设好学吗青羊区企业网站建设策划
  • 设计得到app下载seo自动优化软件安卓
  • DW做旅游网站毕业设计网络服务丢失
  • 网站开发案例详解光盘下载室内装修设计软件推荐
  • 网站的栏目管理品牌建设全过程
  • 廉价网站建设vi视觉识别设计公司
  • wordpress视频网站上传视频seo网站推广推荐
  • 专门做网站需要敲代码么上海建设网站定做
  • 网站的标题符号h5公众号开发
  • 聊城专业建wap网站wordpress签到打卡插件
  • 湖北省建设工程造价管理站网站企业员工信息管理系统
  • 网站copyright写法sem是指什么
  • 潜江资讯seo优化工作内容
  • 网站建设案例算命网站四川省建设工程设备安全协会网站
  • 网站被降权严重吗邯郸最新消息
  • 怎么开通自媒体账号赚钱seo优化厂家
  • 公司网站建设 公司简介怎么写海口网站建设的开发方案
  • 网站正在建设中 模版百度seo关键词优化方案
  • 沈阳网站制作找网势科技视频制作软件哪个好用
  • 学校网站织梦源码wordpress 安全 插件下载失败
  • .net 网站开发教程电商网站开发实例
  • 网站关键词怎么修改德兴市网站建设服务公司
  • 互动网门户网站建设网站开发费用报价单