public override async Task InvokeAsync(RpcContext context, RpcRequestDelegate next) { Console.WriteLine($"LoggerFilter begin,Parameters={context.Parameters[0].ToJson()}"); await next(context); Console.WriteLine($"LoggerFilter end,ReturnValue={context.ReturnValue.ToJson()}"); }
public override async Task InvokeAsync(RpcContext context, RpcRequestDelegate next) { Debug.WriteLine($"CacheFilter begin,Parameters={context.Parameters}"); await next(context); Debug.WriteLine($"CacheFilter end,ReturnValue={context.ReturnValue.ToJson()}"); }
/// <summary> /// 处理请求 /// </summary> /// <returns></returns> private async Task HandleRequest(HttpContext context, RequestModel requestModel) { Type serviceType = _types[requestModel.TypeFullName]; var instance = context.RequestServices.GetService(serviceType); var instanceType = instance.GetType(); var method = instanceType.GetMethod(requestModel.MethodName); var methodParamters = method.GetParameters(); var paramters = requestModel.Paramters; for (int i = 0; i < paramters.Length; i++) { if (paramters[i].GetType() != methodParamters[i].ParameterType) { paramters[i] = paramters[i].ToJson().FromJson(methodParamters[i].ParameterType); } } RpcContext aspectContext = new RpcContext { Parameters = paramters, HttpContext = context, TargetType = instanceType, Method = method }; AspectPiplineBuilder aspectPipline = CreatPipleline(aspectContext); RpcRequestDelegate rpcRequestDelegate = aspectPipline.Build(PiplineEndPoint(instance, aspectContext)); await rpcRequestDelegate(aspectContext); }
public RpcRequestDelegate Build(RpcRequestDelegate _complete) { var invoke = _complete; foreach (var component in _components.Reverse()) { invoke = component(invoke); } return(invoke); }
public abstract Task InvokeAsync(RpcContext context, RpcRequestDelegate next);