小编Ang*_*ang的帖子

如何将 .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
查看次数

Grpc.Core.RpcException“无法反序列化响应消息..”或“InvalidOperationException:长度不匹配”

我正在 .NET Core 3.1 上运行 gRPC 服务,并尝试从 .NET Framework 4.7.2 客户端进行调用。我正在使用 protobuf-net 来重用现有的 WCF 数据契约。今天,当响应对象的字段之一不为空时,我注意到以下意外的客户端行为。

Grpc.Core.RpcException: 'Status(StatusCode="Internal", Detail="Failed to deserialize response message.")

  • 软件包:protobuf-net v2.4.4、Grpc v2.30.0、protobuf-net.Grpc v1.0.90、protobuf-net.Grpc.Native v1.0.90、Google.Protobuf v3.12.2

下面是一个示例,说明了数据契约的一般结构 - 在本例中,Response<PersonData>是响应,PersonDataList是非空字段。

   [DataContract]  
   public class Response<TValue>{
         [DataMember(Order = 1)]
         public TValue Value; 
    }

   [DataContract]  
   public class PersonData : Data {
         [DataMember(Order = 1)]
         public IList<PersonDataItem> PersonDataList; 
    }
    
    [DataContract]
    public PersonDataItem {
         [DataMember(Order = 1)] 
         public PersonDataType Type {get; private set;}
    
         [DataMember(Order = 2)] 
         public DateTime? …
Run Code Online (Sandbox Code Playgroud)

c# protobuf-net grpc

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

标签 统计

c# ×2

grpc ×2

protobuf-net ×2

.net ×1

.net-core ×1