2017-02-09 32 views
2

我struggeling這個和平的代碼:MVC API2 ActionFilterAttribute不叫

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); 
} 

它不起作用。無論我嘗試什麼,方法屬性都不會被調用。根據網站http://www.strathweb.com/2015/06/action-filters-service-filters-type-filters-asp-net-5-mvc-6/這應該工作。按照這question我不得不將該屬性添加到Global.asax。也沒有幫助。

誰能幫幫我?

感謝

+0

什麼是'Website'這裏?這是一個真正的控制器的行動方法嗎? – DavidG

+0

這是一個正在返回的對象。另一端將檢索爲JSON。這是一個ApiController中的方法。 –

+0

你從這裏繼承了哪個版本的'ActionFilterAttribute'?請注意,MVC和WebAPI有不同的版本。 – DavidG

回答

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); 
    } 
} 
+0

作品! (現在除了anwser,我不得不等待)。 Off topic:我可否註冊屬性,以便在調用操作時不會將此屬性放在100個操作上時始終使用它? –

+1

在你的'WebApiConfig.cs'中,加入這一行:'config.Filters.Add(new MultiDatabaseAttribute());' – DavidG

+0

呃,我在找錯地方。再次感謝! –