Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
            }
        }