onactionexecuted net mvc iasyncactionfilter filters asp asp.net asp.net-mvc-3 filter attributes custom-attributes

asp.net - mvc - net core exception filter



¿Cuál es la diferencia entre implementar FilterAttribute, IActionFilter y heredar de ActionFilterAttribute en asp.net mvc 3? (1)

Básicamente, FilterAttribute proporciona el comportamiento de bajo nivel de los atributos de MVC e implementa IMvcFilter que proporciona las propiedades Order y AllowMultiple.

ActionFilterAttribute es la base para filtrar acciones y resultados, ya que es una implementación de IActionFilter, IResultFilter y hereda de FilterAttribute.

La implementación de MySecondFilterAttribute conduce a ActionFilterAttribute sin las capacidades de IResultFilter (OnResultExecuting y OnResultExecuted).

Veo que en una situación podemos anular los métodos OnActionExecuting o OnActionExecuted que heredan de la clase ActionFilterAttribute de la ActionFilterAttribute manera:

public class MyFilterAttribute : ActionFilterAttribute { public override void OnActionExecuted(ActionExecutedContext filterContext) { // bla bla } }

Y en otra situación también podemos implementar IActionFilter y FilterAttribute esta manera:

public class MySecondFilterAttribute : FilterAttribute, IActionFilter { public void OnActionExecuted(ActionExecutingContext filterContext) {} }

Entonces, ¿hay alguna diferencia entre estos dos enfoques, quizás alguna situación particular en la que sería preferible usar uno de ellos sobre el otro?

Gracias por adelantado.