public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) { var result = await HandleAsync(context); if (result.result) { await next(); } else { context.Result = _options.onIntercepted(context.HttpContext, result.valve, IntercepteWhere.ActionFilter); } }
public async Task Invoke(HttpContext context) { nowTime = DateTime.Now; //check var result = await CheckAsync(context); if (result.result) { //在Request的header中存放状态标记 context.Request.Headers[CommonHelper.HeaderStatusKey] = "1"; await _next.Invoke(context); //因为考虑到性能问题,全局valve暂时去掉RateValve的添加 //var status = context.GetHeaderValue(Common.HeaderStatusKey); //if ("1".Equals(status)) //{ // //保存 // await SaveAsync(context); //} } else { context.Request.Headers[CommonHelper.HeaderStatusKey] = "0"; IActionResult actionResult = _options.onIntercepted(context, result.valve, IntercepteWhere.Middleware); ActionContext c = new ActionContext(httpContext: context, routeData: new RouteData(), actionDescriptor: new ActionDescriptor()); await actionResult.ExecuteResultAsync(c); } }