【发布时间】:2021-11-24 11:47:13
【问题描述】:
这是我的设置:
- 答:.Net 标准版=2.0(gRPC 客户端库)
- B:.Net Framework 版本=4.8(Web 应用程序 - 使用客户端库)
- C:.Net Core 版本=3.1(WPF 应用程序 - 使用客户端库)
- D:.Net Core 版本=3.1(gRPC 服务器,我自己创建)
- E:.Net Core 版本=3 或 5 - 我不确定。 (gRPC 服务器,生产)
错误 =“HTTP/2 over TLS 未在仅 HTTP/2 的端点上协商。”
所以...其他人实现了这个 Grpc 服务器 (E)。我可以用这两个应用程序调用这个。没有错误。
但是为了获得一个良好的开发环境来开发这两个应用程序,我从生产服务器获取了原型文件并开发了自己的实现 (D)。我用它来测试客户端的错误处理——我可以控制服务器给出的响应。
我实现了两个完全相同的单元测试,它们实际上是集成测试。一个在 .net 框架项目中,一个在 .net 核心项目中。
它适用于 .net 核心测试,但不适用于 .net 框架。
但是,如果我注入 WinHttpHandler 而不是 HttpClientHandler,那么它可以工作。我真的不想注入处理程序(它甚至不是接口)。
如前所述,生产 gRPC 服务器也可以工作。但我不知道为什么我的失败并且生产 gRPC 服务器正常工作。
我认为我自己的 gRPC 服务实现是错误的(或缺少),但我不知道我缺少什么。
请帮忙!
【问题讨论】:
-
请将代码发布为 文本 而不是屏幕截图。它更易于阅读和复制。