欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.net core并發(fā)請求發(fā)送HttpWebRequest的坑解決

 更新時間:2018年12月16日 11:23:15   作者:lee576  
這篇文章主要給大家介紹了關(guān)于.net core并發(fā)請求發(fā)送HttpWebRequest的坑的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧

在framework中,大量并發(fā) HttpWebRequest 需要設(shè)置一個最大連接數(shù)

ServicePointManager.DefaultConnectionLimit = 200;

但是在.net core中卻無效,因為core不使用 ServicePointManager 管理連接數(shù),在core中只有使用HttpClient,HttpCilentFactory來管理連接數(shù),如果在core中使用 ServicePointManager 不但不起作用,并且大量并發(fā)使用 HttpWebRequest 會導(dǎo)致 IIS 直接假死,所以在core中,只能使用 HttpClient 和 HttpCilentFactory這一條路可走

在Core中的StartUp注冊一個HttpClient的名字

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

然后在Controller中創(chuàng)建

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

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • asp.net中MVC借助Iframe實現(xiàn)無刷新上傳文件實例

    asp.net中MVC借助Iframe實現(xiàn)無刷新上傳文件實例

    這篇文章主要介紹了asp.net中MVC借助Iframe實現(xiàn)無刷新上傳文件的方法,詳細(xì)分析了前端界面、回調(diào)函數(shù)與后臺處理的詳細(xì)流程,非常具有參考借鑒價值,需要的朋友可以參考下
    2014-12-12
  • asp.net中幾種常用的身份驗證方法總結(jié)

    asp.net中幾種常用的身份驗證方法總結(jié)

    本篇文章小編就為大家介紹一下在asp.net中幾種常用的身份驗證方法。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-11-11
  • asp.net(c#)獲取內(nèi)容第一張圖片地址的函數(shù)

    asp.net(c#)獲取內(nèi)容第一張圖片地址的函數(shù)

    C#獲取文章類第一張圖片的地址的函數(shù)(留著以后用),先說一下思路
    2009-11-11
  • Asp.net內(nèi)置對象之Cookies(簡介/屬性方法/基本操作及實例)

    Asp.net內(nèi)置對象之Cookies(簡介/屬性方法/基本操作及實例)

    本文將圍繞cookies了解Cookies對象/Cookie對象的屬性和方法/Cookie的基本操作及實例:Cookie的寫入和讀取/Cookie對象相比Session、Application的優(yōu)缺點扥等,感興趣的朋友可以了解下,或許對你學(xué)習(xí)cookies有所幫助
    2013-02-02
  • ASP.NET筆記之 控件與母板的區(qū)別分析

    ASP.NET筆記之 控件與母板的區(qū)別分析

    本篇文章小編為大家介紹,ASP.NET筆記之 控件與母板的區(qū)別分析。需要的朋友參考下
    2013-04-04
  • .NET?Core企業(yè)微信開發(fā)接口回調(diào)配置

    .NET?Core企業(yè)微信開發(fā)接口回調(diào)配置

    這篇文章介紹了.NET?Core企業(yè)微信回調(diào)配置的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 如何對ASP.NET網(wǎng)站實現(xiàn)靜態(tài)化

    如何對ASP.NET網(wǎng)站實現(xiàn)靜態(tài)化

    對于訪問量比較大的網(wǎng)站,網(wǎng)頁靜態(tài)化是一個比較可靠的解決方案。靜態(tài)化將顯著降低服務(wù)器的壓力,提升服務(wù)器處理能力。下面將介紹兩種不同的實現(xiàn)方法,并進(jìn)行對比。
    2015-09-09
  • .NET Core讀取配置文件

    .NET Core讀取配置文件

    這篇文章介紹了.NET Core讀取配置文件的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • .NET?6中為record類型自定義Equals方法

    .NET?6中為record類型自定義Equals方法

    這篇文章主要介紹了.NET?6中為record類型自定義Equals方法,record類型,這是一種新引用類型,而不是類或結(jié)構(gòu)。record與類不同,區(qū)別在于record類型使用基于值的相等性,下文小編將介紹更多詳細(xì)資料,需要的朋友可以參考一下
    2022-03-03
  • CKEditor與dotnetcore實現(xiàn)圖片上傳功能

    CKEditor與dotnetcore實現(xiàn)圖片上傳功能

    這篇文章主要為大家詳細(xì)介紹了CKEditor與dotnetcore實現(xiàn)圖片上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09

最新評論