Esempio n. 1
0
        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");
     }
 }