private void AddServerCallContextOptionHeaders(Metadata headers, HttpContext httpContext) { var logEvent = GrpcContextConvertor.Convert2LogEvent(httpContext); headers.Add(new Metadata.Entry(ServerCallContextHttpContextLogEventConst.PlatformId, logEvent.PlatformId)); headers.Add(new Metadata.Entry(ServerCallContextHttpContextLogEventConst.UserFlag, logEvent.UserFlag)); headers.Add(new Metadata.Entry(ServerCallContextHttpContextLogEventConst.RequestId, logEvent.RequestId)); headers.Add(new Metadata.Entry(ServerCallContextHttpContextLogEventConst.Url, logEvent.Url)); headers.Add(new Metadata.Entry(ServerCallContextHttpContextLogEventConst.SourceIp, logEvent.SourceIp)); }
public override async Task <TResponse> UnaryServerHandler <TRequest, TResponse>(TRequest request, ServerCallContext context, UnaryServerMethod <TRequest, TResponse> continuation) { try { var logEvent = GrpcContextConvertor.Convert2LogEvent(context.RequestHeaders); // 这里可以对 serverCallContext 做一些额外的数据存储的操作 ServiceProvider.GetRequiredService <IServerCallContextProvider>().ServerCallContext = context; return(await base.UnaryServerHandler(request, context, continuation)); } finally { context.UserState.Remove("logcontext"); } }