【问题标题】:Remove all action filter attributes in a derived web api controller删除派生 Web api 控制器中的所有操作过滤器属性
【发布时间】:2015-12-09 12:15:44
【问题描述】:

我有一个简单的 web api 控制器,其中动作方法装饰有各种内置和自定义过滤器。现在我想创建另一个继承自第一个控制器的控制器,如何删除\绕过派生的所有动作过滤器控制器?

基本控制器:

public class ValuesController : ApiController
{
    // GET api/values
    [Authorize]
    [CustomFilter]
    public virtual IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }
}

派生控制器:

public class ExtenderController : ValuesController
{
    //Must bypass [Authorize] and [CustomFilter]
    public override IEnumerable<string> Get()
    {
        return base.Get();
    }
}

【问题讨论】:

标签: c# asp.net-mvc asp.net-mvc-4 asp.net-web-api


【解决方案1】:

使用 [OverrideActionFilters]

装饰您的动作或控制器

【讨论】:

    【解决方案2】:

    派生控制器:

    public class ExtenderController : ValuesController
    {
        [OverrideAuthorization] //Bypass [Authorize] (Bypass IAuthorizationFilter)
        [OverrideActionFilters] //Bypass [CustomFilter] if inherited from IActionFilter. If not, write your own bypass filter. See an example at link (1) below
        public override IEnumerable<string> Get()
        {
            return base.Get();
        }
    }
    

    详见link(1)link(2)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-09
      • 1970-01-01
      • 2021-09-22
      • 2010-11-23
      • 2015-10-15
      • 2015-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多