MVC webapi,Action的分别拦截器

本文探讨了在.NET框架中,针对WebAPI与传统MVC应用的不同控制器类型(继承自System.Web.Http与System.Web.Mvc),如何实现自定义拦截器(过滤器)。详细对比了IosApproveFilterAttribute在两种不同命名空间下的实现方式及其工作流程。

继承Controller,ApiController的拦截继承的接口不一样

webapi的拦截器:(继承System.Web.Http)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http.Controllers;
using System.Web.Http.Filters;
using System.Configuration;

namespace Rongzi.Mi.Mvc
{
 
    public class IosApproveFilterAttribute : System.Web.Http.Filters.ActionFilterAttribute
    {
        private readonly bool IosApprove = Convert.ToBoolean(ConfigurationManager.AppSettings["IOSApprove"] == null ? "0" : ConfigurationManager.AppSettings["IOSApprove"]);
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            base.OnActionExecuting(actionContext);
        }


        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
        {
            if (IosApprove)
            {
                actionExecutedContext.ActionContext.Response.Headers.Add("IOSApprove", "true");
            }
            base.OnActionExecuted(actionExecutedContext);
        }
    }
}

Controller的拦截:(继承System.Web.Mvc)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http.Controllers;
using System.Configuration;
using System.Web.Mvc;

namespace Rongzi.Mi.Mvc
{

    public class IosApproveFilterAttribute : System.Web.Mvc.ActionFilterAttribute
    {
        private readonly bool IosApprove = ConfigurationManager.AppSettings["IOSApprove"] == "1" ? true : false;
        public override void OnActionExecuting(ActionExecutingContext actionContext)
        {
            base.OnActionExecuting(actionContext);
            
        }
        public override void OnActionExecuted(ActionExecutedContext actionExecutedContext)
        {
            if (IosApprove)
            {
                actionExecutedContext.HttpContext.Response.Headers.Add("IOSApprove", "true");
            }
            base.OnActionExecuted(actionExecutedContext);
        }
    }
}

可以发现他们的继承抽象类都不一样,虽然名称一样,但是是不同的命名空间。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值