微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法使用 gRPCUI 加载依赖的 .proto 文件

如何解决无法使用 gRPCUI 加载依赖的 .proto 文件

我有一个简单的 gRPC 应用。我有 2 个 proto 文件

1.问候.proto

Syntax = "proto3";
import "protos/common.proto";
option csharp_namespace = "Module.SubModule.API";
package greet;

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply);
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
  Error error = 2;
}

2. common.proto

Syntax = "proto3";
option csharp_namespace = "Module.SubModule.API";
package greet;

message Error {
    int32 status_code = 1;
}

文件结构

Project File Structure

项目文件输入

  <ItemGroup>
    <Protobuf Include="Protos\common.proto" GrpcServices="Server" />
    <Protobuf Include="Protos\greet.proto" GrpcServices="Server" />
  </ItemGroup>

当我运行应用程序然后使用 grpcui localhost:5001 时,我收到以下错误消息

Failed to compute set of methods to expose: Symbol not found: greet.Greeter
caused by: File not found: protos/common.proto

有人可以帮忙吗? common.proto 文件位于同一目录中,应用程序运行良好,没有任何构建错误。但是当使用 gRPCUI 时,我明白了。

解决方法

这可能是服务器反射问题。查看 github 上的自述文件 - Proto Source Files 它说如果不支持服务器重新选择,则包含要正确包含的依赖项的导入路径。

这篇文章可能也有帮助gRPC Server Reflection in the .NET world

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。