【问题标题】:How to enable http/2 in Asp.net core 2.2 kestrel (self hosted) on server 2016如何在服务器 2016 上的 Asp.net core 2.2 kestrel(自托管)中启用 http/2
【发布时间】:2019-01-25 23:38:03
【问题描述】:
我刚刚将我的项目从 asp.net core 2.1 更新到 2.2(主要原因是 Brotli- 和 http/2 支持)。
我能够重建、部署和启动应用程序(自托管控制台应用程序)。
该应用在 Windows 2016 服务器上运行并启用了 https(通过公共证书)。
服务器支持 TLS 1.2(使用工具通过 Internet 进行检查)。
不幸的是,http/2 不起作用,因此 Brotli 压缩似乎起作用了。
我的客户端也支持 http/2 - 如果我使用 GC 查看我的网站,我可以看到,我引用的一些文件是 http/2 上的服务器,但不是我的内容。
根据网上查到的资料:
- 我的配置应该满足 http/2 的先决条件
- 如果客户端不支持 http /2
我在这里想念什么...?
【问题讨论】:
标签:
asp.net-core
asp.net-core-mvc
http2
【解决方案1】:
刚刚自己找到了解决方案...
我使用 appsettings.json 在服务器上配置红隼:
{
"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"
}
}
}
}
}
我必须添加条目:
“协议”:“Http1AndHttp2”,
现在,它似乎可以工作了(GC 现在向协议显示“h2”)。
但结果并不如预期(现在似乎有点慢..)。
但是,这是我最初发布的解决方案。
希望这对某人有所帮助...