У меня есть LoggingAttribute
, который регистрирует запрос и ответ в методе OnActionExecuted
:
public class LoggingAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(HttpActionExecutedContext httpContext)
{
//Logger.Log();
}
}
Есть еще один атрибут для проверки запроса и возврата BadRequest
. Этот ответ возврата из метода OnActionExecuting
:
public class ValidateModelAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
var modelState = actionContext.ModelState;
if (!modelState.IsValid)
{
actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, modelState);
}
}
}
Теперь, когда я применяю оба этих атрибута в методе Action, мои BadRequest
не регистрируются, но когда я применяю LoggingAttribute
на уровне контроллера и ValidateModelAttribute
в методе действия, регистрируются BadRequest
s (вызывается OnActionExecuted
из LoggingAttribute
).
Может кто-нибудь объяснить это поведение, т.е. OnActionExecuted
вызывается, даже если метод действия не выполняется, когда атрибут применяется к контроллеру.