在c#中等待grpc拦截器中的延续方法

Posted

技术标签:

【中文标题】在c#中等待grpc拦截器中的延续方法【英文标题】:Await for continuation method in grpc interceptor in c# 【发布时间】:2019-01-15 12:21:33 【问题描述】:

我想在 c# .net 核心中有一个用于 grpc 的拦截器,以检查所有请求凭据并记录所有 rpc 异常,但如果在没有 Await 关键字的情况下调用 Continuation 方法,则其异常不会在此级别引发。所以我等待拦截器继续捕获所有异常。 到目前为止一切正常,但我不知道它是否会在以后特别是在多个 cincurrent rpc 调用中引起任何问题?

    public override async Task<TResponse> UnaryServerHandler<TRequest, TResponse>(TRequest request, ServerCallContext context, UnaryServerMethod<TRequest, TResponse> continuation)
    
        try
        
            CheckLogin(context);
            var res = await continuation(request, context);        
            return res;
        
        catch (RpcException ex)
        
            _logger.LogError(ex, "RPC Error. UnaryServerHanler Error. Method : method", context.Method);
            throw ex;
        
        catch (Exception ex)
        
            _logger.LogError(ex, "UnaryServerHanler Error. Method : method", context.Method);
            throw ex;
        
    

【问题讨论】:

【参考方案1】:

您不必担心在执行异步方法时使用 await 关键字。

实际上,这种机制是为了更好地处理并发代码执行而构建的。

请关注https://***.com/a/14178317/7779827

【讨论】:

以上是关于在c#中等待grpc拦截器中的延续方法的主要内容,如果未能解决你的问题,请参考以下文章

Go gRPC Interceptor 拦截器

聊一聊 gRPC 中的拦截器

聊一聊 gRPC 中的拦截器

gRPC-Web中的拦截器

gRPC(3):拦截器

如何在 gRPC 服务器中添加全局异常拦截器?