等待C#中的grpc拦截器中的继续方法

时间:2019-01-15 12:21:33

标签: c# rpc grpc

我想在c#.net核心中有一个grpc的拦截器,以检查所有请求凭据并记录所有rpc异常,但是如果Continuation方法调用时没有Await关键字,则其异常不会抛出此级别。因此,我等待拦截器的继续进行以捕获所有兴奋剂。 到目前为止,一切正常,但我不知道以后是否会引起任何问题,特别是在多个并发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 个答案:

答案 0 :(得分:0)

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

实际上-建立该机制是为了更好地处理并发代码执行。

请注意https://stackoverflow.com/a/14178317/7779827