Ждем продолжения метода в перехватчике grpc в c # - PullRequest
0 голосов
/ 15 января 2019

Я хочу иметь перехватчик для grpc в ядре c # .net, чтобы проверять все учетные данные запроса и регистрировать все исключения rpc, но если метод Continuation вызывает без ключевого слова Await, его исключение не выдает на этом уровне. поэтому я жду продолжения в перехватчике, чтобы поймать все исключения. Пока что все работает хорошо, но я не знаю, может ли это вызвать какие-либо проблемы позже, особенно при многократных вызовах rpc cincurrent?

    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 голосов
/ 15 января 2019

Вам не нужно беспокоиться об использовании ключевого слова await при выполнении асинхронных методов.

На самом деле - этот механизм создан для лучшей обработки выполнения кода параллелизма.

Пожалуйста, смотрите https://stackoverflow.com/a/14178317/7779827

...