为HttpClient开启HTTP/2

正文

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

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

自 .NET Core 3.0 发布以来, .NET 开发人员可以使用 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 中可能存在行为或性能问题。

.NET 6 中的新增功能 | Microsoft Learn

将 HTTP/3 与 HttpClient 结合使用 - .NET | Microsoft Learn

How to use HTTP/2 with HttpClient in .NET 6.0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1549876.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统软件看门狗

1.看门狗定义 Linux 自带了一个 watchdog 的实现,用于监视系统的运行,包括一个内核 watchdog module 和一个用户空间的 watchdog 程序。 内核 watchdog 模块通过 /dev/watchdog 这个字符设备与用户空间通信。用户空间程序一旦打开 /dev/watchdog 设备&a…

软件看门狗怎么设计

有几个看门狗 主控内部有条看门狗,叫做内部狗,有的产品外部有充电ic,也能起到看门狗的作用,一般和主控采用IIC通讯,叫做外部狗。 环境 以RTOS为例子,介绍看门狗设计 设计目的 1.能监控到每个线程是否有…

STM32看门狗详解

看门狗的作用:防止单片机因未知原因死机或比我们预期的时间过长长时间不能响应,如果出现这种问题,看门狗就会把单片机复位 独立看门狗(IWDG): 时钟来源:内部低速时钟(LSI&#xff0…

linux看门狗定时器,看门狗定时器的作用

看门狗定时器(WDT,Watch Dog TImer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个数字,程序开始运行后看门狗开始倒计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始…

独立看门狗

一、独立看门狗概述 1、为什么需要看门狗? 单片机的工作易受到外界电磁场干扰,造成程序跑飞,而陷入死循环,造成整个系统陷入停滞状态。出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运…

Prometheus+Grafana+AlertManager监控Linux主机状态

文章目录 PrometheusGrafanaAlertManager监控平台搭建开始监控Grafana连接Prometheus数据源导入Grafana模板监控Linux主机状态 同系列文章 PrometheusGrafanaAlertManager监控平台搭建 Docker搭建并配置Prometheus Docker拉取并配置Grafana Docker安装并配置Node-Exporter …

STM32看门狗简述

概述 看门狗一般分为硬件看门狗和软件看门狗,主要用来解决程序CPU异常,程序跑飞挂死等问题,提高系统的可靠性。 硬件看门狗是利用一个定时器电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时器清零(俗…

国内大公司的开源项目一览表(包含mysql读写分离等)

原文地址:http://gad.qq.com/article/detail/34413?sessionUserTypeBFT.PARAMS.239074.TASKID&ADUIN731373934&ADSESSION1508293481&ADTAGCLIENT.QQ.5533_.0&ADPUBNO26719 奇虎360 https://github.com/Qihoo360 1.MySQL中间层 Atlas Atlas是由 Qih…

BAT、360、新浪 小米 网易等大公司开源项目

阿里巴巴开源的好软件太多,请自行选择所需,我列几个我们用的 阿里巴巴 Alibaba https://github.com/alibaba/ https://github.com/thx 1.分布式key/value存储系统 Tair Tair是由淘宝网自主开发的Key/Value结构数据存储系统,在淘宝网有着大规…

【GeoDa实用技巧100例】022:geoda生成空间权重矩阵(邻接矩阵、距离矩阵)

geoda生成空间权重矩阵(邻接矩阵、距离矩阵),车式矩阵、后式矩阵、K邻接矩阵。 文章目录 一、概述二、“车式”邻接的gal文档生成三、“后式”邻接gal文档生成四、k最近邻居gat文档生成五、查看gal和gat文档一、概述 空间权重矩阵(或相应的表格形式)一般需要用计算机软件生…

一些官方的github地址

阿里巴巴开源github地址:https://github.com/alibaba 腾讯开源github地址:https://github.com/Tencent 奇虎360github地址:https://github.com/Qihoo360 小米开源github地址:https://github.com/XiaoMi 豆瓣开源github地址:https://github.com/douban 网易开源github地址…

32、启用 HTTP 响应压缩和编程式配置Web应用

★ 启用HTTP压缩 就是前端页面如果改动的比较多,那么响应就会比较慢,可以通过设置HTTP响应压缩来提高响应,如果前端改动少,那么就不需要启动这个响应压缩。 目的:为了提高HTTP响应数据在网络上的传输效率。▲ 设置如…

Android Jetpack Compose中使用字段验证的方法

Android Jetpack Compose中使用字段验证的方法 数据验证是创建健壮且用户友好的Android应用程序的关键部分。随着现代UI工具包Jetpack Compose的引入,处理字段验证变得更加高效和直观。在这篇文章中,我们将探讨如何在Android应用中使用Jetpack Compose进…

快速搭建 Linux 学习平台

最近换了一个新的笔记本电脑,原来的学习环境没了,所以就重新搭建一下,顺便把这个过程给记录下来,希望可以帮助有需要的人。一个学习环境最主要的目的是简化学习需要准备的时间,不需要花费太多的时间在哪些不必要的细枝…

ZD Soft Screen Recorder 注册汉化版 【好用的屏幕录制软件】

ZD Soft Screen Recorder 汉化版捕获计算机屏幕上的内容与声音,并保存为各种格式压缩的视频文件。你在屏幕上看到的一切都可以在高帧速率连续进行记录。其结果视频在记录时间内清晰再现画面内容,所以是声音。 ZD Soft Screen Recorder 也能够拍摄图像的截…

树莓派控制ZD-8731两相步进电机驱动器

之前写过一篇驱动步进电机的文章,可以跟这篇参考着看。请戳这里! 一、硬件: 树莓派3B ZD-8731驱动器 与驱动器配套的步进电机 电源 驱动器需要24V电源供电(用电很危险,请注意安全!) 二、…

linux内核编译无线网卡,ZD1211B芯片USB无线网卡Linux驱动的编译

我用的无线网卡芯片是zd1211b的,在网上找到很多驱动都不好用,最后在这里上找到好用的驱动 我们用的Linux内核是2.6.14的。驱动的交叉编译非常简单,在其Makefile中修改交叉编译器,然后把相应的KERNEL_SOURCE,MODPATH&am…

c -2 数组 指针 %zd 结构体

数组的初始化方式 初始化方式 int a[3] {10, 9, 6};int a[3] {10,9};int a[] {11, 7, 6};int a[4] {[1]11,[0] 7}; 数组与函数 数组作为函数参数,可以省略元素个数. 数组作为函数参数.传递是整个数组的地址,修改函数形参, 数组元素的值,会影响到外面的实参数组. 数组当做函…

特别好用的录屏软件--ZD Soft Screen Recorder_8.0

亲测,特别好用的一款录屏软件,大小仅有2.14M 免安装,即开即用 下载地址:https://download.csdn.net/download/smwykao/10391461

ORCALE触发器使用生成自增长的编号('zd20183290001')

本人是个新手,大佬们多多关照! 目前在学习oracle数据库,现在简单的使用触发器来生成字符串自增长编号(zd20183290001); -- 1. 首先创建一个用户表:TEST_USER;字段:ID,NAME DROP TABLE TEST_USER; CREA…