asp.net - 使用 gRPC 服务器作为主机调试 Blazor Webassembly
问题描述
我有一个 Blazor WASM 应用程序,该应用程序应托管在使用 ASP.NET 上的 gRPC 和 .NET 5.0 实现的后端内。当我尝试调试 WASM 应用程序时,一旦调试浏览器启动,我就会收到此错误:
fail: Microsoft.AspNetCore.Server.Kestrel[0]
HTTP/2 over TLS was not negotiated on an HTTP/2-only endpoint.
所有开发证书均已安装并受信任,并使用wss://
方案建立 websocket 连接。所以从我的角度来看,TLS 协商应该会成功。
我已经发现我可以通过更改 Kestrel 端点设置来Http1AndHttp2
解决这个问题,然后由于降级到 Http/1 而导致从前端到后端的 gRPC 连接失败。
所以我的问题是:在托管站点上使用 Http/2 服务器时,是否有任何选项可以调试 Blazot WASM?如果这是不可能的:我能否以某种方式确定 gRPC 端点是使用 HTTP/2 传递的,而调试端点是通过 HTTP/1.1 传递的?
解决方案
以下是检查 Http/2 上的 TLS 协商限制的一些提示:
- TLS 1.2 或更高版本
- 重新协商已禁用
- 压缩已禁用
- 最小临时密钥交换大小:
- 椭圆曲线 Diffie-Hellman (ECDHE) [RFC4492]:最少 224 位
- 有限域 Diffie-Hellman (DHE) [TLS12]:最少 2048 位
- 密码套件不被禁止。
推荐阅读
- firebase - 有没有办法通过命令行在 Firebase 模拟器中创建发布订阅消息?
- android - 社交登录在 Android 浏览器应用程序中不起作用
- javascript - 在按下按钮之前反应组件触发警报以及用户输入之前的 POST 请求
- javascript - 为什么我不能在护照 js 中向 serializeUser 添加电子邮件?
- macos - 无法使用前端 dockerfile.v0 解决:无法读取 dockerfile:来自发件人的错误:打开 /private/tmp/AVScanB2wT:权限被拒绝
- yii2 - Yii2 模块或控制器路由
- node.js - NestJS:使用动态模块设置元数据(将 ServeStaticModule 标记为公共)
- plot - 重新排序散景图例
- flutter - 如何使用 offStage 小部件?
- javascript - 模运算在阈值签名 (TSS) 实现中不起作用