我已經創建了一個基本控制器,它包含一個UnitOfWork,因此我不必一直新建它。在這個控制器我還補充說,我想要運行的每個請求三個動作過濾器:自定義操作過濾器不會在運行時執行
[ElmahLogFilter]
[LoggingActionFilter]
[RequestValidationFilter]
public class BaseController : ApiController
{
private UnitOfWork _unitOfWork;
public UnitOfWork UnitOfWork
{
get { return _unitOfWork ?? (_unitOfWork = new UnitOfWork()); }
}
}
然後,我只是有一個控制器定義,像這樣:
[System.Web.Http.Authorize(Roles = "Host, Guest")]
public class MeetingController : BaseController
{
//Code in here
}
但是沒有ActionFilters的將執行時發出請求。我已確保每個ActionFilter都可以使用System.Web.Http.Filters
名稱空間,以免與MVC版本衝突。這是我的一個過濾器的樣子:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http.Filters;
public class LoggingActionFilter : ActionFilterAttribute
{
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
//Logging Code Here
base.OnActionExecuted(actionExecutedContext);
}
}
我都花在這個試圖簡單地執行一個動作過濾器一段時間,但沒有骰子爲止。有什麼我失蹤?
編輯: 只要我刪除[Authorize]
屬性,過濾器就可以工作。但確保角色在這裏得到遵守很重要。
可悲的是,如果我將這些添加到Global.asax中,似乎沒有什麼區別。如果這有什麼不同,我已經用編輯更新了我的問題? – 2014-12-07 21:16:21