我按照以下说明操作:
在 .NET Core 中创建 gRPC 服务和客户端,一切都很好。
接下来,我需要一个旧的 .NET 框架应用程序访问该服务。我找到了一些安装的 NuGet 包,但没有找到任何告诉您如何使用它们来制作 gRPC 客户端的内容。我确定它在某个地方,但目前被 .NET Core 版本的文档淹没了。
我尝试创建一个 .NET Standard 项目来弥补差距,但 .Net Core 包需要 .Net Standard 2.1,它没有使用任何版本的 .Net Framework 来引用它。
谁能告诉我如何做到这一点或为我指明正确的方向?
编辑:所以我找到了一些 .Net Framework 与 gRPC 一起使用的代码。.Net Framework 示例默认为不安全连接,而 .Net Core 示例默认为安全连接。关于如何改变任何一个都没有明确的路径。我试过生成一个证书来让客户端连接,但这没有用。
所以我的新问题是:有谁知道如何说服 .Net Core gRPC 服务接受不安全的 (http:) 连接?
无法连接到此链接中提到的迎宾 grpc 服务 - https://docs.microsoft.com/en-us/aspnet/core/tutorials/grpc/grpc-start?view=aspnetcore-3.0 从迎宾客户端是使用 grpc.core 库(Grpc.Core.2.24.0和Grpc.Core.Api.2.24.0)从 .net 框架应用程序编写。
下面是我的客户端代码。它适用于非 SSL,但不适用于 SSL
具有非 SSL 的客户端代码(这有效)
var channel = new Channel("localhost:5000", ChannelCredentials.Insecure);
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(new HelloRequest { Name = "GreeterClient" });
channel.ShutdownAsync().Wait();
Run Code Online (Sandbox Code Playgroud)
带有 SSL 的客户端代码(无法连接)
SslCredentials secureChannel = new SslCredentials();
var channel = new Channel("localhost", 5001, secureChannel);
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(new HelloRequest { Name = "GreeterClient" });
channel.ShutdownAsync().Wait();
Run Code Online (Sandbox Code Playgroud)
我使用 SSL 遇到的错误是:
Grpc.Core.RpcException: 'Status(StatusCode=Unavailable, …