2017-09-25 12 views
1

주말에 특정 웹 메서드에 대한 입력을 거부하고 싶습니다. 액션 필터는 그것을위한 자연스러운 수단처럼 보였습니다.WEB API 메서드 실행을 자동으로 차단합니다.

public class RunMonThruFriAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(HttpActionContext actionContext) 
    { 
     var today = DateTime.Now.DayOfWeek;   
     if (today == DayOfWeek.Saturday || today == DayOfWeek.Sunday) 
      throw new CustomException("Outside allowed or day time", 999); 
    } 
} 

이것은 작동하지만 실제로는 Exception을 던지지는 않습니다. 입력을 자동으로 거부하기 위해 Exception 대신 무엇을 사용할 수 있습니까?

답변

0

메소드에서 응답을 설정할 수 있습니다. 여기서는 Unauthorized을 사용했지만이 값을 적절하게 변경할 수 있습니다.

public override void OnActionExecuting(HttpActionContext actionContext) 
{ 
    var today = DateTime.Now.DayOfWeek;   
    if (today == DayOfWeek.Saturday || today == DayOfWeek.Sunday) 
    { 
     actionContext.Response = new System.Net.Http.HttpResponseMessage 
     { 
      StatusCode = System.Net.HttpStatusCode.Unauthorized, // use whatever http status code is appropriate 
      RequestMessage = actionContext.ControllerContext.Request 
     }; 
    } 
}