ASP.NET Core中使用Filter

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using Newtonsoft.Json.Linq; 

public class  RequestActionAttribute : ActionFilterAttribute
    {
        /// <summary>
        /// 方法执行前
        /// </summary>
        /// <param name="context"></param>
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            //获取请求Controller名
            string controller = context.RouteData.Values["Controller"].ToString();
            //获取Action
            string action = context.RouteData.Values["Action"].ToString();
            //获取请求方式
            string method = context.HttpContext.Request.Method;
            //获取请求头部
            //var headrs = filterContext.HttpContext.Request.Headers;
            //获取请求参数
            //var queryString = filterContext.HttpContext.Request.QueryString;
            //var forms = filterContext.HttpContext.Request.Form;

            var request = context.HttpContext.Request;
            string sign= request.Form["Sign"];

              JObject jObj = new JObject();
            foreach (var paramName in request.Form.Keys)
            {
                //jObj.Add(paramName,JToken.FromObject(request.Form[paramName].ToString()));
//jObj.ToString()  转Json会有换行符和空格
                jObj.Add(paramName,request.Form[paramName].ToString());
            }

            
            string sign = MD5Helper.Md5Hash(jObj.ToJson() +SystemConfig.MerchantCallbackKey);


            //中断执行并提示信息
 context.Result=new Microsoft.AspNetCore.Mvc.RedirectResult("/OutputMsg?msg='"+ System.Web.HttpUtility.UrlEncode(OutputJson.Write(-1, "签名验证失败"), Encoding.UTF8) +"'");

        }

        /// <summary>
        /// 方法执行后
        /// </summary>
        /// <param name="context"></param>
        public override void OnActionExecuted(ActionExecutedContext context)
        {
            string controller = context.RouteData.Values["Controller"].ToString();
            string action = context.RouteData.Values["Action"].ToString();
            string method = context.HttpContext.Request.Method;
            object responseResult = null;
            if (context.Result is JsonResult)
            {
                responseResult = ((JsonResult)context.Result).Value;
            }
            if (context.Result is ObjectResult)
            {
                responseResult = ((ObjectResult)context.Result).Value;
            }
            NLogUtils.Info($"Controller:{controller},Action:{action},Method:{method},出参:{responseResult?.ToJson()}", this.GetType().Name);
        }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值