我尝试在我的GRPC服务上使用Postman,如下所述:https://learn.microsoft.com/en-us/aspnet/core/grpc/test-tools?view=aspnetcore-6.0
不幸的是,我得到了下面的错误:
无法加载服务器反射。
详细信息:未知错误
在Console中,我可以看到一堆信息消息,没有错误:
2019 - 05 - 29 01:01:01:02:02:02:03:03:03:03:03:03:03:04:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:05:
Copyright © 2018 - 2019 www.cnjs.com. All Rights Reserved.粤ICP备15048888号-1
信息:Microsoft. AspNetCore. Routing. EndpointMiddleware 1
已执行端点“gRPC-/grpc.reflection.v1alpha.ServerReflection/ServerReflectionInfo”
不知道该怎么做才能调查和解决。
- 如果我将proto文件导入Postman,我可以执行一个端点,它工作正常。**
一些细节:
- 我正在使用HTTP/2 over HTTP。
- Postman版本10.14.5
- 所有的grpc包都是2.50.0版本
- 我尝试了几种启用http/2的方法,如在this answer中
任何帮助赞赏!
1条答案
按热度按时间yyyllmsg1#
我使用https://github.com/fullstorydev/grpcurl而不是Postman连接到服务。它立即给了我一个有意义的错误:
无法解析符号“My.Service”:
未找到符号:My.Service
原因:文件未找到:google/protobuf/Empty.proto
这有点令人费解,尤其是服务还可以。
然而,结果是我的导入定义有一个不正确的大小写(参见https://github.com/fullstorydev/grpcurl/issues/203)。
我有
"google/protobuf/Empty.proto";
而不是import "google/protobuf/empty.proto";
。修正后,它在Postman和Grpcurl中都工作正常。
为了记录在案-这并不是说Grpcurl比Postman有更好的错误处理。
这取决于-例如,当使用不正确的协议(HTTP 1而不是HTTP 2)时,Grpcurl只是说
Failed to dial target host "localhost:5001": context deadline exceeded
,而Postman的错误更有意义:INTERNAL: Received RST_STREAM with code 2 triggered by internal client error: Protocol error