【问题标题】:Error when trying to connect to gRPC endpoint from a UI tool or proxy tool尝试从 UI 工具或代理工具连接到 gRPC 端点时出错
【发布时间】:2021-01-04 06:24:36
【问题描述】:

我正在使用 .NetCore 测试 gRPC,并寻找 GUI 工具或可以帮助我测试端点的东西,例如测试 REST API。 我找到了一个代理工具:grpc-json-proxy,可以与 Postman 工具一起使用(还找到了另一个 GUI 工具:grpcox)。
尝试连接到端点时,使用任何工具都会出现如下错误:

无法请求 err=[发布 http://localhost:5001/greet.Greeter/SayHello: 拨打 tcp 127.0.0.1:5001: 连接:连接被拒绝]

知道可能是什么问题吗?

【问题讨论】:

  • 另一个用于测试 gRPC 服务的 GUI 工具是 Kreya。它支持服务器反射、原型导入、环境和身份验证方案。 免责声明:我是 Kreya 的作者之一。

标签: .net-core grpc


【解决方案1】:

最重要的是,您确定 gRPC 服务器正在监听 localhost:50051 吗?您可以使用以下命令(在 Linux 上)确认这一点:

GRPC="50051"
ss --tcp --listening --processes "sport = :${GRPC}"

注意您可能需要sudo ss ... 才能获得流程

或者更简单地说:

telnet localhost 50051

如果您收到Connected to...,这是一个好兆头

然后,如果您通过 docker 使用这些工具中的任何一个,则需要确保容器可以访问主机的 50051 端口。为此,请使用--net=host 运行容器。这将使主机的端口对容器可用。

我用grpCurl

【讨论】:

  • 服务器正常运行并响应,因为我在 .Net Core 中编写了一个客户端并且它工作正常。
  • .NET 客户端是否使用 TLS?如果是这样,您需要确保您的工具指向https://。或者,试一下 grpCurl,我知道这行得通。
  • 根据此工具github.com/jnewmano/grpc-json-proxy 的文档,我应该始终使用HTTP,代理会为我建立https 连接。
猜你喜欢
  • 2020-11-27
  • 2017-01-20
  • 1970-01-01
  • 1970-01-01
  • 2015-01-09
  • 1970-01-01
  • 2018-01-31
  • 2016-06-19
  • 2020-09-24
相关资源
最近更新 更多