開始寫一個簡單的過濾器,以每個動作負載要求拉一些東西來看,複製從其他stackoverflows一些代碼,看起來像這樣:錯誤與簡單ActionFilterAttribute
public class TestKeyAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext context)
{
if (context.Request.Properties.ContainsKey("test"))
{
// do stuff
}
}
}
然後用剩下添加的屬性:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
GlobalConfiguration.Configuration.Filters.Add(new ElmahHandledErrorLoggerFilter());
filters.Add(new HandleErrorAttribute());
filters.Add(new TestKeyAttribute());
}
上運行,導致此錯誤:
The given filter instance must implement one or more of the following filter
interfaces: IAuthorizationFilter, IActionFilter, IResultFilter, IExceptionFilter.
大多數我發現的鏈接與MVC 3相關,並且這似乎起作用;然而,我正在使用MVC 4並使用Web API--是否還有其他一些方法需要現在註冊該屬性?
請注意:我不希望將過濾器連接到Web API控制器(將其添加到GlobalConfiguration.Configuration.Filters確實可行),而是使用普通的Web控制器。
編輯:我知道我可以從IActionFilter繼承,而不是使用OnActionExecuting得到這個工作,我只是好奇爲什麼這種方法是行不通的,因爲一堆教程,似乎在說應該。
也適合我!謝謝。 – mike123