2016-10-24 4 views
0

유지 관리 필터를 구현하려는 WebApi 프로젝트가 있습니다. 이제 필터가 두 번 호출된다는 문제가 있습니다. 그래서 나는 올바른 http 상태 코드를 가지고 있지만, 필터는 가로 채기를하지 않고 제어되는 내 메소드가 정상적으로 호출됩니다.WebApi 프로젝트의 유지 관리를 위해 필터 체인을 가로 채는 방법

내가해야 할 일은 필터가 올바르게 가로 채고 다른 방법이 호출되지 않는다는 것입니다.

public class MaintenanceFilter : ActionFilterAttribute 
{ 
    [Dependency] 
    public IUaCRepository UaC { get; set; } 

    public override void OnActionExecuting(HttpActionContext actionContext) 
    { 
     base.OnActionExecuting(actionContext); 
    } 

    public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) 
    { 
     if (UaC != null && UaC.CheckMaintenance(WebApiConfig.CONFIG_STANDARD)) 
     { 
      var response = actionExecutedContext.Response; 
      response.StatusCode = HttpStatusCode.ServiceUnavailable; 

      return; 
     } 
     base.OnActionExecuted(actionExecutedContext); 
    } 
} 

안부

[편집]이 내 문제 soleved :

public override void OnActionExecuting(HttpActionContext actionContext) 
    { 
     if (UaC != null && UaC.CheckMaintenance(WebApiConfig.CONFIG_STANDARD)) 
     { 
      actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.ServiceUnavailable, "Maintenance"); 

      return; 
     } 
     base.OnActionExecuting(actionContext); 
    } 

답변

1

재정의 고정 된 응답을 제공하는 OnActionExecuting 방법. 이 방법으로 요청 처리가 진행되지 않습니다.

+0

안녕하세요,이 방법은 내 응답이 null입니다. – BHuelse

+0

나는 당신이 의미하는 것을 발견했다. 'actionContext.Response = actionContext.Request.CreateErrorResponse (HttpStatusCode.ServiceUnavailable, "Maintenance");' OnActionExecuting 작동, thx – BHuelse

관련 문제