首页 > 解决方案 > GRCP拦截客户端

问题描述

我正在使用 protobuf-net(Grpc.Core 之上的 v1.0.123,v2.30.0)并使用创建代理

     var channel = new Channel(uri.Host, uri.Port, ChannelCredentials.Insecure, new []
     {
        new ChannelOption("grpc.keepalive_time_ms", oneDayMs),
        new ChannelOption("grpc.keepalive_timeout_ms", oneDayMs), 
        new ChannelOption("grpc.keepalive_permit_without_calls", 1), 
     });
     var proxy = channel.CreateGrpcService<T>();

这很好用,但是在一段时间不活动后,代理停止工作并且我得到 Status(StatusCode="Unknown", Detail="Stream removed", Debu...了 ,我认为这是一个保活问题。

我的第一个问题是:这些选项是否应该以某种方式在服务器端设置?

这似乎是不可能的,因为它们是 ChannelOptions,但我问是因为我的第二个问题是:有没有办法拦截客户端调用?如果有,我可以在尝试并重新创建代理时检查异常(这适用于我们的用例)。但是,据我所知,Interceptor类严格来说是服务器端的东西。

基本上,我只是想延长 GRPC 服务的生命周期,但会采取任何方式来实现。

标签: c#grpcprotobuf-net

解决方案


推荐阅读