目录
一、咨询区Dmitriy二、回答区valentasm三、点评区stem.Linq;using System.Threading.Tasks;using Grpc.Core;using Grpc.Core.Interceptors;using Microsoft.Extensions.Logging;namespace Systemx.WebService.Services{ public class ServerLoggerInterceptor : Interceptor { private readonly ILogger<ServerLoggerInterceptor> _logger; public ServerLoggerInterceptor(ILogger<ServerLoggerInterceptor> logger) { _logger = logger; } public override async Task<TResponse> UnaryServerHandler<TRequest, TResponse>( TRequest request, ServerCallContext context, UnaryServerMethod<TRequest, TResponse> continuation) { //LogCall<TRequest, TResponse>(MethodType.Unary, context); try { return await continuation(request, context); } catch (Exception ex) { // Note: The gRPC framework also logs exceptions thrown by handlers to .NET Core logging. _logger.LogError(ex, $"Error thrown by {context.Method}."); throw; } } }}
接下来就可以在 Startup 中通过 AddGrpc 注入啦:
services.AddGrpc(options =>{ { options.Interceptors.Add<ServerLoggerInterceptor>(); options.EnableDetailedErrors = true; }});三、点评区
grpc 早已经替代 wcf 成功一种基于tcp的跨机器通讯技术,看得出 grpc 和 asp.net core 集成越来越好,是得需要大家花费精力好好学习。








