【发布时间】:2021-02-17 10:35:45
【问题描述】:
我在 net5 中实现了一个简单的 gRPC 服务,类似于项目模板中的 GreeterService。
服务在使用 IIS LocalHost 时工作正常,但客户端在调用远程服务器时抛出此异常:
Grpc.Core.RpcException HResult=0x80131500 Message=Status(StatusCode="Internal", Detail="Request protocol 'HTTP/1.1' is not supported.")
我认为 Grpc 默认使用 HTTP/2。我做错了什么?
【问题讨论】:
-
您有IIS installation supporting HTTP/2,即Server 2016 或Windows 10?你有证书(TLS)吗?
-
没有任何代码,只能猜测。是的,gRPC 适用于 HTTP/2。所以当只有 HTTP/1.1 可用时,它是行不通的。 HTTP/2 需要 HTTPS,所以如果客户端(或服务器)不使用 HTTPS,就不能使用 gRPC
-
Browsers 无法使用 gRPC,因此创建了 gRPC-Web 规范。例如,这会影响 SPA 和 Blazor WASM。