如何在服务器 2016 上的 Asp.net 核心 2.2 红隼(自托管)中启用 http/2
How to enable http/2 in Asp.net core 2.2 kestrel (self hosted) on server 2016
我刚刚将我的项目从 asp.net 核心 2.1 更新到 2.2(主要原因是 Brotli- 和 http/2 支持)。
我能够重建、部署和启动应用程序(自托管控制台应用程序)。
该应用 运行 在 Windows 2016 服务器上并启用了 https(通过 public 证书)。
服务器支持TLS 1.2(用工具在网上查过)。
不幸的是 http/2 不起作用,而 Brotli 压缩似乎起作用了。
我的客户也支持 http/2 - 如果我用 GC 查看我的网站,我可以看到,我的一些引用文件是服务器 http/2,但不是我的内容。
根据网上查到的资料:
- 我的配置应该满足 http/2
的先决条件
- Asp.net 核心 2.2 应默认使用 http/2 自动 (无需更改代码或设置)并回退到 [=39= .1 自动,如果客户端不支持 http/2
我在这里想念什么...?
刚刚自己找到了解决方案...
我使用 appsettings.json 在服务器上配置 kestrel:
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*"
,
"Kestrel": {
"EndPoints": {
"Http": {
"Url": "http://localhost:5000"
},
"HttpsInlineCertFile": {
"Url": "https://nnn.nnn.n.n:nnnnn",
"Protocols": "Http1AndHttp2",
"Certificate": {
"Path": "./certificate.pfx",
"Password": "Password",
"AllowInvalid": "true"
}
}
}
}
}
我必须添加条目:
"Protocols": "Http1AndHttp2",
现在,它似乎可以工作了(GC 现在向协议显示 "h2")。
但是结果却不尽如人意(现在好像有点慢了..)
然而,这是我最初发布的解决方案。
希望这对某人有所帮助...
我刚刚将我的项目从 asp.net 核心 2.1 更新到 2.2(主要原因是 Brotli- 和 http/2 支持)。
我能够重建、部署和启动应用程序(自托管控制台应用程序)。
该应用 运行 在 Windows 2016 服务器上并启用了 https(通过 public 证书)。
服务器支持TLS 1.2(用工具在网上查过)。
不幸的是 http/2 不起作用,而 Brotli 压缩似乎起作用了。
我的客户也支持 http/2 - 如果我用 GC 查看我的网站,我可以看到,我的一些引用文件是服务器 http/2,但不是我的内容。
根据网上查到的资料:
- 我的配置应该满足 http/2 的先决条件
- Asp.net 核心 2.2 应默认使用 http/2 自动 (无需更改代码或设置)并回退到 [=39= .1 自动,如果客户端不支持 http/2
我在这里想念什么...?
刚刚自己找到了解决方案...
我使用 appsettings.json 在服务器上配置 kestrel:
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*"
,
"Kestrel": {
"EndPoints": {
"Http": {
"Url": "http://localhost:5000"
},
"HttpsInlineCertFile": {
"Url": "https://nnn.nnn.n.n:nnnnn",
"Protocols": "Http1AndHttp2",
"Certificate": {
"Path": "./certificate.pfx",
"Password": "Password",
"AllowInvalid": "true"
}
}
}
}
}
我必须添加条目: "Protocols": "Http1AndHttp2",
现在,它似乎可以工作了(GC 现在向协议显示 "h2")。
但是结果却不尽如人意(现在好像有点慢了..)
然而,这是我最初发布的解决方案。
希望这对某人有所帮助...