国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

.net core并發請求發送HttpWebRequest的坑解決

來源:懂視網 責編:小采 時間:2020-11-27 22:34:39
文檔

.net core并發請求發送HttpWebRequest的坑解決

.net core并發請求發送HttpWebRequest的坑解決:在framework中,大量并發 HttpWebRequest 需要設置一個最大連接數 ServicePointManager.DefaultConnectionLimit = 200; 但是在.net core中卻無效,因為core不使用 ServicePointManager 管理連接數,在core中只有使用HttpCli
推薦度:
導讀.net core并發請求發送HttpWebRequest的坑解決:在framework中,大量并發 HttpWebRequest 需要設置一個最大連接數 ServicePointManager.DefaultConnectionLimit = 200; 但是在.net core中卻無效,因為core不使用 ServicePointManager 管理連接數,在core中只有使用HttpCli

在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));
 
 }
 }
}

總結

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

.net core并發請求發送HttpWebRequest的坑解決

.net core并發請求發送HttpWebRequest的坑解決:在framework中,大量并發 HttpWebRequest 需要設置一個最大連接數 ServicePointManager.DefaultConnectionLimit = 200; 但是在.net core中卻無效,因為core不使用 ServicePointManager 管理連接數,在core中只有使用HttpCli
推薦度:
標簽: 解決 請求 net
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 欧美亚洲综合一区 | 欧美亚洲专区 | 中文国产成人精品久久app | 欧美视频精品一区二区三区 | 国产一区精品在线观看 | 亚洲欧美一区二区三区九九九 | 欧美激情网站 | 亚洲第八页 | 日本不卡视频一区二区三区 | 欧美一区二区三区精品 | 日韩va亚洲va欧美va浪潮 | 亚洲欧美韩国 | 欧美综合国产精品日韩一 | 日韩亚洲欧美视频 | 香蕉视频在线免费看 | 欧美日韩国产在线播放 | 欧美日韩在线观看一区二区 | 一边摸一边叫床一边爽 | 一区二区久久 | 亚洲精品毛片久久久久久久 | 精品久久久久久亚洲 | 久久亚洲国产成人精品性色 | 国产欧美日韩一区二区三区在线 | 欧美日韩一区二区三区在线观看 | 亚洲精品国产精品精 | 国产在线视欧美亚综合 | 国产a免费视频 | 国产69精品久久久久777 | 欧美激情亚洲一区中文字幕 | 欧美日韩在线高清 | 不卡在线一区 | 欧美一区二区三区视频在线观看 | 国产精品欧美一区二区三区 | 在线中文 | 永久免费观看的毛片的网站下载 | 另类专区亚洲 | 亚洲 欧洲 另类 综合 自拍 | 国产高清视频在线 | 久久这里只有精品9 | 欧洲亚洲一区 | 婷婷伊人 |