为HttpClient开启HTTP/2

yizhihongxing

.Net Core在调用其他服务时,调用通常使用HttpClient,而HttpClient默认使用HTTP/1.1 。

为HttpClient开启HTTP/2

 

 

配置 HttpClient 以使用 HTTP/2 h2 连接

自 .NET Core 3.0 发布以来, .NET 开发人员可以使用 HttpClient 启用 HTTP/2 。

为HttpClient开启HTTP/2

 

设置 HTTP/2 的方法

DefaultRequestVersion和DefaultVersionPolicy选项在HttpClient对象本身上可用。这些属性将应用于通过常规 HttpClient 方法(如GetAsync、PostAsync、PatchAsync或PutAsync )完成的所有请求。

 

直接设置

var client = new HttpClient();
client.DefaultRequestVersion = HttpVersion.Version20;
client.DefaultVersionPolicy = HttpVersionPolicy.RequestVersionOrLower;

DI

builder.Services.AddHttpClient("h2multiconnnections", httpclient =>
{
    httpclient.DefaultRequestVersion = HttpVersion.Version20;
    httpclient.DefaultVersionPolicy = HttpVersionPolicy.RequestVersionOrLower;
})

 

HTTPRequestMessage

如果您使用Send或SendAsync方法,您必须在其中传递HttpRequestMessage的实例,则需要在 HttpRequestMessage 实例上设置Version和VersionPolicy属性。

var request = new HttpRequestMessage(HttpMethod.Post, url);
request.Version = HttpVersion.Version20;
request.VersionPolicy = HttpVersionPolicy.RequestVersionOrLower;
var response = await _client.SendAsync(request);

 

配置 HttpClient 以使用 HTTP/2 的多个连接

在 .NET 5.0 和 .NET 6.0 中,HttpClient 默认配置为仅打开 1 个到 HTTP/2 服务器的连接。另外,最大并发流数的推荐值为100。

在某些情况下,出于性能原因,如果您在短时间内发送数千个请求,则可能需要与服务器建立 1 个以上的连接。出于这个原因,在 .NET 5.0 中,Microsoft在SocketsHttpHandler类上引入了EnableMultipleHttp2Connections属性,使开发人员能够根据需要更改默认行为。

builder.Services.AddHttpClient("h2multiconnnections", httpclient =>
{
    httpclient.DefaultRequestVersion = HttpVersion.Version20;
    httpclient.DefaultVersionPolicy = HttpVersionPolicy.RequestVersionOrLower;
})
.ConfigurePrimaryHttpMessageHandler(() =>
  new SocketsHttpHandler
  {
      EnableMultipleHttp2Connections = true
  });

 

HTTP/3

在 .NET 6 中,HTTP/3 可作为预览功能使用,因为 HTTP/3 规范尚未最终确定。带有 .NET 6 的 HTTP/3 中可能存在行为或性能问题。

https://learn.microsoft.com/zh-cn/dotnet/core/whats-new/dotnet-6#http3

https://learn.microsoft.com/zh-cn/dotnet/core/extensions/httpclient-http3

https://www.siakabaro.com/use-http-2-with-httpclient-in-net-6-0/

原文链接:https://www.cnblogs.com/chenyishi/p/17361557.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:为HttpClient开启HTTP/2 - Python技术站

(0)
上一篇 2023年5月5日
下一篇 2023年5月5日

相关文章

  • C# DateTime.Now方法: 获取当前日期和时间

    C#中DateTime.Now的作用和使用方法 DateTime.Now 是 C# 中的一个静态属性,用于获取当前系统的日期和时间信息。 例如: DateTime now = DateTime.Now; Console.WriteLine(now); 输出: 2022/1/31 10:37:02 我们可以看到输出的格式为“年/月/日 时:分:秒”。 下面是 …

    C# 2023年4月19日
    00
  • 基于C# winform实现图片上传功能的方法

    下面是“基于C# Winform实现图片上传功能的方法”的完整攻略: 一、准备工作 首先,我们需要将Winform应用程序的工具箱中添加一个OpenFileDialog控件,用于选择要上传的图片;还需要添加一个PictureBox控件,用于展示已经选择好的图片。 二、上传图片的流程 获得待上传的图片的本地路径 使用OpenFileDialog控件的ShowD…

    C# 2023年6月2日
    00
  • ASP.NET在IIS7中上下文中不可用的解决方法

    在IIS7中,ASP.NET应用程序可能会遇到上下文不可用的问题。这可能是由于IIS7的集成模式引起的。本文将提供详解“ASP.NET在IIS7中上下文中不可用的解决方法”的完整攻略,包括如何解决上下文不可用的问题、如何在IIS7中配置ASP.NET应用程序等。 解决上下文不可用的问题 在IIS7中,ASP.NET应用程序可能会遇到上下文不可用的问题。这可能…

    C# 2023年5月15日
    00
  • C#创建不规则窗体的4种方式详解

    C#创建不规则窗体的4种方式详解 简介 标准的窗体一般都是矩形,但是有时候我们可能需要创建一个不规则的窗体。本文将详细介绍C#创建不规则窗体的4种方式,并通过代码示例来演示。 方式一:使用无边框窗体并设置圆角 使用Form控件创建一个无边框窗体,然后通过设置圆角使其看起来像是一个不规则窗体。下面是一个简单的示例: public partial class I…

    C# 2023年6月7日
    00
  • WCF基础介绍并创建简单应用程序

    下面是详细讲解“WCF基础介绍并创建简单应用程序”的完整攻略: WCF基础介绍 什么是WCF? WCF(Windows Communication Foundation)是微软提供的一个统一的平台,用于构建面向服务的应用程序。WCF提供了一个框架,可以通过这个框架来定义、实现和调用服务。WCF支持多种传输协议(如TCP/IP、HTTP、MSMQ等),同时也支…

    C# 2023年6月7日
    00
  • C# DateTime.Now方法: 获取当前系统时间

    DateTime.Now 是C#中一个静态属性,返回当前时间的 DateTime 对象。它的作用是获取当前系统时间,通常用于记录日志、计算时间差、显示当前时间等功能。下面我们将详细讲解 DateTime.Now 的使用方法,并给出两个实例说明。 使用方法 使用 DateTime.Now 很简单,只需要调用它即可返回当前时间的 DateTime 对象。在代码中…

    C# 2023年4月19日
    00
  • c#字符串编码编码(encoding)使用方法示例

    c#字符串编码编码(encoding)使用方法示例 在C#中,字符串编码(encoding)是将文字转换成二进制数据(byte数组),输出或读取到文件或设备中的方式。本文将介绍C#中字符串编码的使用方法及示例说明。 1. 编码与解码 编码指将字符串转换成二进制数据,而解码则是将二进制数据转换成字符串。在C#中,编码和解码都是通过Encoding类实现的。 以…

    C# 2023年6月1日
    00
  • unityZXing二维码的生成与扫描

    一、UnityZXing简介 UnityZXing是一个为Unity3D提供二维码扫描识别和生成的插件。它使用Google ZXing库实现了对二维码的快速识别和生成,可以在Unity项目中轻松地添加二维码功能。 二、UnityZXing的安装 打开Unity工程,在Assets菜单中选择“Import Package” -> “Custom Pack…

    C# 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部