작업 필터는 작업 메서드 실행 전후에 추가 논리를 추가하는 데 사용됩니다. OnActionExecuting 및 OnActionExecuted 메서드는 작업 메서드가 실행되기 전후에 논리를 추가하는 데 사용됩니다.
액션 메서드 실행 전후에 일부 정보를 기록하는 ActionFilterAttribute를 구현하는 LogAttribute를 생성해 보겠습니다.
LogAttribute -
예
using System; using System.Diagnostics; using System.Web.Http.Controllers; using System.Web.Http.Filters; namespace DemoWebApplication.Controllers{ public class LogAttribute : ActionFilterAttribute { public override void OnActionExecuting(HttpActionContext actionContext){ Debug.WriteLine(string.Format("Action Method {0} executing at {1}", actionContext.ActionDescriptor.ActionName, DateTime.Now.ToShortDateString()), "Web API Logs"); } public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext){ Debug.WriteLine(string.Format("Action Method {0} executed at {1}", actionExecutedContext.ActionContext.ActionDescriptor.ActionName, DateTime.Now.ToShortDateString()), "Web API Logs"); } } }
컨트롤러 작업 -
예
using System.Web.Http; namespace DemoWebApplication.Controllers{ public class DemoController : ApiController{ [Log] public IHttpActionResult Get(){ //Some logic return Ok(); } } }
OnActionExecuting 및 OnActionExecuted 메소드가 구현된 Log 속성을 사용했기 때문에 디버그 콘솔에 로그 정보가 추가됩니다.