为HttpClient开启HTTP/2

.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/archive/2023/04/28/17361557.html

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

(0)
上一篇 2023年4月28日
下一篇 2023年4月28日

相关文章

  • 详解c# 中的DateTime

    详解C#中的DateTime 什么是DateTime DateTime是C#中非常常用的一个类,用于表示时间和日期。它包括年、月、日、时、分、秒、毫秒等各种时间单位,提供了各种方法用于获取、操作和显示时间和日期。 示例1:创建DateTime对象 在C#中创建DateTime对象非常简单,只需要调用DateTime的静态方法之一,或者使用DateTime构造…

    C# 2023年6月1日
    00
  • springboot2整合redis使用lettuce连接池的方法(解决lettuce连接池无效问题)

    下面我来详细讲解一下“springboot2整合redis使用lettuce连接池的方法(解决lettuce连接池无效问题)”的完整攻略。 环境准备 JDK8及以上 SpringBoot2.0及以上 Redis 5.0及以上 Lettuce及其连接池 添加依赖 在pom.xml文件中添加以下依赖: <dependency> <groupId…

    C# 2023年6月1日
    00
  • C#操作Access通用类实例

    C#操作Access数据库通用类是一种可以实现对Access数据库进行操作的通用类,可以在项目中共用,减少了重复编写代码的工作量,提高了开发效率。下面给出实现的完整攻略等内容: 步骤一:创建Access数据库 首先需要在电脑上安装好Access数据库,在安装好之后打开Access,并通过创建表格的方式来创建一个Access数据库。 步骤二:新建C#项目 通过…

    C# 2023年5月31日
    00
  • 浅析SQL Server中包含事务的存储过程

    浅析SQL Server中包含事务的存储过程 什么是存储过程 存储过程是一组预先编写的可重复使用的SQL语句集合,它们被保存在数据库中,可以通过一个单独的指令调用它们并执行。存储过程可以实现更加复杂的操作,为数据库提供更好的封装性和安全性。 什么是事务 事务是指对数据库进行一组数据操作的过程,这些操作要么全部成功,要么全部失败,不存在只执行了其中一部分操作的…

    C# 2023年5月31日
    00
  • C#实现窗体淡入淡出效果的方法总结

    C#实现窗体淡入淡出效果的方法总结 1. 引言 在C#编写窗体应用程序时,我们可能会需要为窗体增加各种特效来增强用户的体验感。其中,淡入淡出效果是一种比较常见的特效方式,可以使窗体的显示效果更加平滑自然。那么,本篇文章将对C#实现窗体淡入淡出效果的方法进行总结。 2. 方法总结 2.1 使窗体透明度渐变 首先,我们可以通过改变窗体的透明度,来实现窗体淡入淡出…

    C# 2023年6月7日
    00
  • .Net Core以windows服务方式部署

    关于“.Net Core以Windows服务方式部署”的完整攻略,下面是详细的步骤: 1. 创建.NET Core控制台应用程序 首先需要创建一个.NET Core控制台应用程序,这可以通过在终端中使用“dotnet new console”命令完成,这将创建一个最简单的.NET Core应用程序。 2. 添加Microsoft.Extensions.Hos…

    C# 2023年5月15日
    00
  • 基于C#生成随机数示例

    生成随机数是很常见的一种需求,无论是在游戏、金融还是科学领域,都需要使用到随机数。C#作为一门强大的编程语言,自然也提供了非常方便的方法来生成随机数。 下面是生成随机数的完整攻略。 步骤一 – 声明随机数生成器 首先,我们需要创建 Random 类型的对象,来帮助我们生成随机数。 在 C# 中,我们可以使用以下代码生成随机数生成器: Random rando…

    C# 2023年6月1日
    00
  • C#判断字符串是否是int/double(实例)

    下面就是详细的攻略: 题目背景 在我们的日常工作中,可能会遇到需要判断一个字符串值是否是整数或者浮点数。比如,我们从用户输入表单中获取到了一个值,我们需要判断这个值是不是整数或浮点数。在C#中,我们可以采用以下的方式来判断字符串是否是整数或者浮点数。 判断字符串是否是整数 我们可以使用C#内置的TryParse方法来判断一个字符串是否是整数,并且可以获取到整…

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