在framework中,大量并发 HttpWebRequest 需要设置一个最大连接数

ServicePointManager.DefaultConnectionLimit = 200;

但是在.net core中却无效,因为core不使用 ServicePointManager 管理连接数,在core中只有使用HttpClient,HttpCilentFactory来管理连接数,如果在core中使用 ServicePointManager 不但不起作用,并且大量并发使用 HttpWebRequest 会导致 IIS 直接假死,所以在core中,只能使用 HttpClient 和 HttpCilentFactory这一条路可走

在Core中的StartUp注册一个HttpClient的名字

        public void ConfigureServices(IServiceCollection services){services.AddHttpClient("HttpClientFactoryDemo");}

然后在Controller中创建

using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using Microsoft.AspNetCore.Mvc;namespace HttpClientFactoryDemo.Controllers
{[Route("api/[controller]")][ApiController]public class ValuesController : ControllerBase{private readonly IHttpClientFactory _httpClientFactory;public ValuesController(IHttpClientFactory httpClientFactory){_httpClientFactory = httpClientFactory;}public static string UrlEncode(string temp, Encoding encoding){StringBuilder stringBuilder = new StringBuilder();for (int i = 0; i < temp.Length; i++){string t = temp[i].ToString();string k = HttpUtility.UrlEncode(t, encoding);if (t == k){stringBuilder.Append(t);}else{stringBuilder.Append(k.ToUpper());}}return stringBuilder.ToString();}[HttpGet]public async Task<ActionResult> Get(){Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);string xmlContent = "<?xml version=\"1.0\" encoding=\"GBK\" standalone=\"yes\"?><xml><version>1</version><ins_cd>08A9999999</ins_cd><mchnt_cd>0002900F0370588</mchnt_cd><term_id></term_id><random_str>93b4efa6d0d84808a76355ff0f7a178d</random_str><sign>G1+TBpyEVwsQjeJ9X7zrObRTFtI/ItuJWEEYl3AT/9XlFd844Jv2Wb/gNVkuEVP890Tf1Ub+EaTe1qByHSu97cpQr6riuDxqw2nnjKZBZsG00C1d8070sZPf4c1hkSUfhlR2nPn+7dvIanLCjRFzTgoTQ/WtcArrL/SJIJeaXYg=</sign><order_type>ALIPAY</order_type><goods_des>卡盟测试</goods_des><goods_detail></goods_detail><addn_inf></addn_inf><mchnt_order_no>2018121302054468584629</mchnt_order_no><curr_type></curr_type><order_amt>1</order_amt><term_ip>127.0.0.1</term_ip><txn_begin_ts>20181213020544</txn_begin_ts><goods_tag></goods_tag><auth_code>288232051781304899</auth_code><sence>1</sence><reserved_sub_appid></reserved_sub_appid><reserved_limit_pay></reserved_limit_pay></xml>";xmlContent = UrlEncode(xmlContent, Encoding.GetEncoding("GBK"));Dictionary<string, string> nvs = new Dictionary<string, string> { { "req", xmlContent } };Encoding encoding = Encoding.GetEncoding("GBK");StringBuilder buffer = new StringBuilder();int i = 0;IDictionary<string, string> sortedParams = new SortedDictionary<string, string>(nvs);foreach (KeyValuePair<string, string> kvp in nvs){buffer.AppendFormat(i > 0 ? "&{0}={1}" : "{0}={1}", kvp.Key,UrlEncode(kvp.Value, Encoding.GetEncoding("GBK")));i++;}byte[] postBody = encoding.GetBytes(buffer.ToString());var client = _httpClientFactory.CreateClient("HttpClientFactoryDemo");var request = new HttpRequestMessage{RequestUri = new Uri("https://spay.fuiou.com/commonQuery"),Method = HttpMethod.Post,Content = new ByteArrayContent(postBody),};request.Content.Headers.ContentType =new MediaTypeHeaderValue("application/x-www-form-urlencoded");return Ok(await client.SendAsync(request));}}
}

.net core 中并发请求发送HttpWebRequest的坑相关推荐

  1. jsp中Ajax请求发送PUT、DELETE请求的方式_刘锋的博客

    jsp中Ajax请求发送PUT.DELETE请求的方式 方式一 首先配置pom.xml ,添加过滤器 <filter><filter-name>hiddenHttpMethod ...

  2. 如何在 Asp.Net Core 中对请求进行限流

    译文链接:https://www.infoworld.com/article/3442946/how-to-implement-rate-limiting-in-aspnet-core.html 在应 ...

  3. hive 导出json格式 文件_Magicodes.IE在.NET Core中通过请求头导出多种格式文件

    前言 在2.2里程碑中我们增加了一些新的功能,正如标题所写通过请求头进行导出我们不同格式的文件.下面我们来看一下如何使用.通过这种方式无论是对我们的数据多用途,还是说对我们的数据校验都做到了轻松易配. ...

  4. linux递归创建文件夹_Python中并发请求创建文件夹带来的线程安全问题

    在我们日常写程序的过程中,免不了与文件系统打交道,各种开发语言都提供了与文件系统交互的指令函数,比如Python中的os模块,就提供了许多这样的指令函数,今天就以创建文件夹为例,来说一下,如果用的不当 ...

  5. Vue-resource中post请求将data数据以request payload转换为form data的形式

    今天在做项目的时候 需要往api中发送一个json格式的对象,但是怎么改都不行,当然,使用的vue 的 http方法. 而且,开始使用时 vue-resource中post请求时的一个坑,vue-re ...

  6. 浅析Entity Framework Core中的并发处理

    前言 Entity Framework Core 2.0更新也已经有一段时间了,园子里也有不少的文章.. 本文主要是浅析一下Entity Framework Core的并发处理方式. 1.常见的并发处 ...

  7. .NET Core 中的并发编程

    今天我们购买的每台电脑都有一个多核心的 CPU,允许它并行执行多个指令.操作系统通过将进程调度到不同的内核来发挥这个结构的优点. 然而,还可以通过异步 I/O 操作和并行处理来帮助我们提高单个应用程序 ...

  8. Java 中如何模拟真正的同时并发请求?

    有时需要测试一下某个功能的并发性能,又不要想借助于其他工具,索性就自己的开发语言,来一个并发请求就最方便了. java中模拟并发请求,自然是很方便的,只要多开几个线程,发起请求就好了.但是,这种请求, ...

  9. 在 .NET Core 中的并发编程

    原文地址:http://www.dotnetcurry.com/dotnet/1360/concurrent-programming-dotnet-core 今天我们购买的每台电脑都有一个多核心的 C ...

最新文章

  1. python计算相关系数
  2. react 哲学_细聊Concent amp; Recoil , 探索react数据流的新开发模式
  3. iOS中如何监测来电
  4. yfan.qiu linux硬链接与软链接
  5. 容器编排技术 -- Kubernetes 为 Namespace 配置最小和最大 CPU 限制
  6. Java基础教程:IO流与文件基础
  7. java 文件压缩_java实现文件压缩
  8. ios开发--企业帐号发布
  9. 《干货集锦》——前端大牛 Addy Osmani 的15个精彩PPT
  10. 天猫魔盒1代TMB100E刷机, 以及右声道无声的问题
  11. 依云工资查询系统升级至6.4
  12. 动态IP和静态IP区别,别傻傻分不清楚!
  13. 计算机水平等级全称,全国计算机等级考试介绍
  14. 大量带BPM的跑步歌曲/跑步音乐下载
  15. 揭秘交通大脑——BATJ技术争夺战,滴滴与高德的AI新版图
  16. IEduChina2019国际教育展在北京完美落幕
  17. Tomb.com—新域名上线
  18. mysql locate用法,LOCATE()函数如何与MySQL WHERE子句一起使用?
  19. 字典型列表转化为csv文件格式
  20. 加速乐cookie爬虫

热门文章

  1. 教你快速保存天猫上多个商品图片方法
  2. 华为荣耀3C联通版刷机包 官方B605制作仿魅族MX3 高级状态栏
  3. 智云通CRM:如何用行动促进成交?(一)
  4. 测试=====微信发红包
  5. 用Particular制作炸出红包的效果
  6. 物联网流量池_物联网卡流量池
  7. Typora软件下载
  8. 平平无奇的python大作业罢辽
  9. 非接触物体尺寸形态测量_检修人必备的测量常识
  10. 用Python实现自动发消息,自定义内容,太省事了!