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가 MVC 버전과 충돌하지 않도록 System.Web.Http.Filters
네임 스페이스에서 작동하도록했습니다. 지금까지 단순히 하나 개의 액션 필터를 실행하려고 이것에 잠시 동안하지하지만 주사위 한
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에 추가하면 슬프게도 차이가없는 것처럼 보입니다. 어떤 차이가 있다면 수정하여 내 질문을 업데이트 했습니까? –