相关疑难解决方法(0)

如何将 .NET 框架中的 gRPC 客户端与安全的 .NET Core 服务器连接?

我在 .NET Core 服务器上使用 protobuf-net.Grpc 并尝试从 .NET Framework (4.7.2.) gRPC 客户端进行调用。完整的示例在这里: https: //github.com/angelagyang/GRPCProtobufExample

这是我的客户的片段:

var channelCreds = new SslCredentials(GetRootCertificates());
var channel = new Channel("localhost", 5001, channelCreds);
var greeter = channel.CreateGrpcService<IGreeterService>();
Run Code Online (Sandbox Code Playgroud)

StatusCode="Unknown", Detail="Stream removed"...使用此配置,我在调用服务器时收到错误。如果我在服务器上设置,我就可以连接到服务器ClientCertificateMode = ClientCertificateMode.NoCertificate但是,我希望服务器需要客户端证书并通过指纹验证证书

例如,在 .NET Core 中,我可以使用 Grpc.Net.Client 来配置我的通道,如下所示:

var handler = new HttpClientHandler();
handler.ClientCertificates.Add(certificate);
var channel2 = GrpcChannel.ForAddress("https://localhost:5001", new GrpcChannelOptions
{
      HttpHandler = handler
});
Run Code Online (Sandbox Code Playgroud)

有没有办法像这样在 .NET Framework 中配置带有证书的客户端?我对 gRPC/.NET 还很陌生,非常感谢任何建议!

.net c# protobuf-net .net-core grpc

6
推荐指数
1
解决办法
7131
查看次数

从 .Net Framework 客户端调用 gRPC 服务器时出现异常

我有一个在 .Net Core 中实现的 gRPC 服务器,我想与在 .Net Framework 中运行的控制台应用程序联系。

这是该问题的工作存储库:

https://github.com/q-bertsuit/grpc-framework-core-issue

以下 .Net Core 客户端工作正常:

class Program
{
    static async Task Main(string[] args)
    {
        
        var input = new MyModel();

        var channel = GrpcChannel.ForAddress("https://localhost:5001");
        var client = new Test.TestClient(channel);

        var reply = await client.SetTestAsync(input);

        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

以下 .Net Framework 客户端引发异常:

class Program
{
    static void Main(string[] args)
    {
        Channel channel = new Channel("https://localhost:5001", ChannelCredentials.Insecure);
        
        var    client = new Test.TestClient(channel);

        MyModel request = new MyModel();

        var reply = client.SetTest(request);

        channel.ShutdownAsync().Wait();


        Console.ReadLine(); …
Run Code Online (Sandbox Code Playgroud)

.net c# protocol-buffers grpc

5
推荐指数
1
解决办法
9162
查看次数

Grpc .Net 客户端无法使用 SSL 连接到服务器

无法连接到此链接中提到的迎宾 grpc 服务 - https://docs.microsoft.com/en-us/aspnet/core/tutorials/grpc/grpc-start?view=aspnetcore-3.0 从迎宾客户端是使用 grpc.core 库(Grpc.Core.2.24.0Grpc.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, …

c# grpc

3
推荐指数
1
解决办法
5588
查看次数

如何从运行 .NET 4.7.2 的 WPF 访问 gRPC 服务?

我在 .NET Core 中创建了一个 gRPC 服务,需要从在 .NET 4.7.2 上运行的旧版 WPF 应用程序使用它。现有的 WPF 应用程序非常庞大,无法立即转换为 .NET Core,仅仅使用 gRPC 付出的努力是不值得的。我的问题是,有没有办法使用 .NET 4.7.2 WPF 中的 gRPC 服务?

.net c# wpf grpc asp.net-core

2
推荐指数
1
解决办法
2657
查看次数

标签 统计

c# ×4

grpc ×4

.net ×3

.net-core ×1

asp.net-core ×1

protobuf-net ×1

protocol-buffers ×1

wpf ×1