让.NET应用支持Http/3,QUIC协议

1. 必备条件

1.1 .NET应用开启https

Programe.cs中配置了https支持,

var builder = WebApplication.CreateBuilder(args);builder.WebHost.ConfigureKestrel((context, options) =>
{options.ListenAnyIP(5001, listenOptions =>{listenOptions.Protocols = HttpProtocols.Http1AndHttp2AndHttp3;listenOptions.UseHttps();});
});

或者appsettings.json中配置了https协议,建议在下面位置配置:

 "Kestrel": {"Endpoints": {"Https": {"Url": "https://*:7190","Protocols": "Http1AndHttp2AndHttp3", //自签名证书不能用于http3,一旦满足条件,kestrel会自动添加Alt-svc标头"Certificate": {"Path": "your_cert.pfx","Password": "your_cert_password"}}}}

经过测试Cloudflare的证书,可以用于开启服务端的http3,访问时可以看到Alt-Svc标头。

 1.2 . 系统环境

Windows11/Windows Server 2012

直接运行

Ubuntu 24.04

添加 Microsoft 软件包库

wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update

安装 libmsquic 包

sudo apt-get install libmsquic

我安装后查看是2.4版,配和.NET 9没有问题。

在安装之前,无论怎么配https, 都看不懂Alt-Svc标头,安装后就有了。

1.3 开放端口,UDP也要开

sudo ufw allow 443

2. 测试验证

2.1 浏览器请用Chrome或者Edge最新版

自签名证书

  • 浏览器不允许在 HTTP/3 上使用自签名证书,例如 Kestrel 开发证书,Cloudflare的10年证书

  • 如果一定要用可以用下面方式强制开启http3/quic

方式一

chrome.exe --origin-to-force-quic-on=localhost:6001 https://localhost:6001

方式二

Chrome://flags, 启用访问http3使用自签名证书。

Chrome Enable http3 on self signed cert

使用浏览器信任机构发行的证书:

  • 腾讯云/阿里云的免费证书可以。let's encrypt的证书可以。所以请在appsettings.json中使用这种证书。
  • 服务端配置了这种证书的,直接打开Chrome浏览器访问即可。

查看协议

http3,quic协议查看验证

如果没看到,不要着急,清下缓存,勾选停用缓存再看看,多试几次。

也可以换用Edge看看。

2.2 代理问题

  • 代理通常不支持http/3,请关闭代理
  • IPv4可能存在多级NAT,某些路由支持的NAT类型有限制,导致UDP打不开,不易连上http3. 建议使用IPv6测试,IPv6是Peer to Peer.

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NocoBase 本周更新汇总:优化移动端

本周更新包括:移动端交互优化,缺陷修复等。汇总一周产品更新日志,最新发布可以前往我们的博客查看。 NocoBase 目前更新包括的版本更新包括三个分支:main ,next和 develop。main :截止目前最稳定的版本,推荐安装此版本。 next:包含即将发布的新功能,经过初步测试的版本…

宝塔Windows面板的资源占用情况如何?

宝塔Windows面板的资源占用情况如下:内存:纯面板约占用系统300M左右的内存。这意味着在没有其他服务和应用程序的情况下,宝塔面板本身大约占用300M的内存。然而,实际使用中,服务器通常会运行其他服务和应用程序,因此建议至少4096M以上的内存,以确保系统的整体性能。 硬盘…

如何在易优EyouCms中启用产品模型?

在使用易优EyouCms时,产品模型是一个非常重要的功能,尤其对于需要展示和销售产品的网站来说。然而,默认情况下,产品模型可能不会出现在新建栏目的模型选项中。为了启用产品模型,您需要按照以下步骤操作:进入后台管理:打开浏览器,输入您的易优EyouCms后台管理地址,例如…

公司网站怎么修改产品,高效管理产品信息

公司网站的产品页面是展示产品信息的重要窗口。以下是一些步骤和技巧,帮助您高效地修改公司网站的产品信息:确定修改内容:明确需要修改的产品信息,例如产品名称、描述、价格、图片等。登录后台管理系统:如果您的网站使用CMS(如WordPress、Joomla等),登录后台管理系统。…

Z-BlogPHP 后台 JavaScript 加载失败的原因是什么?

“后台 JavaScript 加载失败”错误通常出现在 Z-BlogPHP 中,表示浏览器在加载后台页面时无法正确加载 JavaScript 文件。以下是常见的原因和解决方法:浏览器版本过低:使用老旧的浏览器版本(如 IE6/7/8 等)可能导致 JavaScript 加载失败。 解决方法:更新浏览器到最新版本,…

Z-BlogPHP 调试模式的作用是什么?

在 Z-BlogPHP 中,调试模式(Debug Mode)是一个非常有用的工具,它可以帮助开发者和管理员诊断和解决网站程序中的各种问题。以下是调试模式的主要作用和使用方法:显示详细的错误信息:当调试模式开启时,Z-BlogPHP 会显示详细的错误信息,包括错误类型、错误消息、发生错误的…

前端vue项目

安装node管理工具nvm 安装nvmnvm网址:https://nvm.uihtm.com/

Apache SeaTunnel如何实现MongoDB到Doris无缝数据同步?

如果你需要使用Apache SeaTunnel将MongoDB数据库的数据同步到Doris,你可以按照以下步骤进行操作。这些步骤基于Apache SeaTunnel的官方文档和社区提供的最佳实践: 一、环境准备下载并安装SeaTunnel:访问SeaTunnel的官方GitHub页面,下载最新稳定版本的SeaTunnel。 解压下载的…

Python中创建使用本地包

在项目中创建本地包,需要以下几个步骤: 1. 创建包目录 2. 在包目录中创建一个init.py文件 3. 在包目录中创建模块文件 4. 使用包中的模块 下面详细介绍操作步骤 1. 创建包目录 包目录用来存放本包相关的代码。包目录是一个普通的文件夹,但是它包含了一些特定文件和结构,使得…

大模型(LLM、VLM)在自动驾驶中的应用 - 博客资料

GPT-4V在自动驾驶中初探 - 知乎 自动驾驶大模型,是怎么学习「世界知识」的?_文章_新出行

冬至出游无忧:如何用管理计划软件制定精准的旅游计划

一、冬至旅游规划的挑战与需求 1.1 冬至旅游的特点 冬至作为一年中白昼最短、黑夜最长的一天,在很多文化中具有重要意义。许多人选择在这个时节进行短途或长途旅游,享受寒冷季节的独特魅力。冬季旅游的特点通常包括: 季节性强:冬至的旅游多集中在冬季热门目的地,如滑雪胜地…

AD DA收发卡 设计资料:611-基于VU9P的2路4Gsps AD 2路5G DA PCIe收发卡

一、板卡概述 基于XCVU9P的5Gsps AD DA收发PCIe板卡。该板卡要求符合PCIe 3.0标准,包含一片XCVU9P-2FLGA2014I、2组64-bit/8GB DDR4、2路高速AD, 2路高速DA,支持外触发,外时钟。板卡工作温度范围0到60℃,板卡设计加工包含散热装置,支持服务器风冷散热。软件包括接口…