未调用MVC API2 ActionFilterAttribute

时间:2017-02-09 10:07:05

标签: c# asp.net-mvc attributes

我对这种代码的和平感到不安:

public class MultiDatabaseAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        base.OnActionExecuting(filterContext);
    }
}

我想在我的API中对某些ActionResults执行OnActionExecuting。这是我的API中的一种方法:

[MultiDatabase]
public Website Get(int id)
{
    return _websites.Get(id);
}

它不起作用。无论我尝试什么,都不会调用method属性。根据网站http://www.strathweb.com/2015/06/action-filters-service-filters-type-filters-asp-net-5-mvc-6/,这应该有效。

根据这个question我必须将属性添加到Global.asax。也没有帮助。

谁能帮帮我?

由于

1 个答案:

答案 0 :(得分:2)

您从错误的基类继承您的属性。 MVC和WebAPI有不同的对象(至少在ASP.Net Core将它们合并为一个之前)。确保您的属性中包含正确的导入:

using System.Web.Http.Filters;

或者使用完整的命名空间:

public class MultiDatabaseAttribute : System.Web.Http.Filters.ActionFilterAttribute
{
    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        base.OnActionExecuting(actionContext);
    }
}