【问题标题】:Grpc interceptor is not being called未调用 Grpc 拦截器
【发布时间】:2021-04-22 11:09:17
【问题描述】:

我添加了被 Grpc.Core.Interceptors.Interceptor 继承的 MyInterceptor:

public class MyInterceptor : Interceptor
{
    public override Task<TResponse> UnaryServerHandler<TRequest, TResponse>(TRequest request, ServerCallContext context, UnaryServerMethod<TRequest, TResponse> continuation)
    {
        //do something
        return base.UnaryServerHandler(request, context, continuation);
    }
}

我正在通过以下方式启用此拦截器:

_server = new Server(channelOptions)
{
   Services = { Service.ServerServiceDefinition() },
   Ports = { new ServerPort(...) },
};

var interceptor = new MyInterceptor();

foreach(var service in _server.Services)
{
   service.Intercept(interceptor);
}

而且每次我调用 grpc 方法,拦截器都没有被调用。

非常感谢。

【问题讨论】:

    标签: c# grpc


    【解决方案1】:

    Intercept 方法返回修饰的ServerServiceDefinition;因此,您可能想要更多类似的东西:

    var interceptor = new MyInterceptor();
    _server = new Server(channelOptions)
    {
       Services = { Service.ServerServiceDefinition().Intercept(interceptor) },
       Ports = { new ServerPort(...) },
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-11
      • 2016-11-13
      • 1970-01-01
      • 2023-01-22
      • 2012-08-18
      • 2019-01-21
      • 2015-08-14
      相关资源
      最近更新 更多