Filtro de registro de la API de MVC 4

Estoy usando MVC 4 Web API para crear una capa de servicio para una aplicación. Estoy tratando de crear un filtro global que actuará en todas las solicitudes entrantes a la API. Ahora entiendo que esto debe configurarse de manera diferente a los filtros de acción globales estándar de MVC. Pero tengo problemas para obtener cualquiera de los ejemplos que estoy encontrando en línea para trabajar.

El problema que estoy encontrando está en registrar el filtro con la API web.

Tengo mi Global.asax configurado de esta manera ...

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        MVCConfig.RegisterRoutes(RouteTable.Routes);
        MVCConfig.RegisterGlobalFilters(GlobalFilters.Filters);

        WebApiConfig.RegisterRoutes(GlobalConfiguration.Configuration);
        WebApiConfig.RegisterGlobalFilters(GlobalConfiguration.Configuration.Filters);
    }
}

Mi enrutamiento y filtros Mvc estándar funcionan correctamente. Al igual que mi enrutamiento WebApi. Esto es lo que tengo para el registro de mi filtro webApi ...

public static void RegisterGlobalFilters(System.Web.Http.Filters.HttpFilterCollection filters)
{
    filters.Add(new PerformanceTestFilter());
}

Y aquí está el PerformanceTestFilter ...

public class PerformanceTestFilter : ActionFilterAttribute
{
    private readonly Stopwatch _stopWatch = new Stopwatch();

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        _stopWatch.Reset();
        _stopWatch.Start();
    }

    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        _stopWatch.Stop();
        var executionTime = _stopWatch.ElapsedMilliseconds;
        // Do something with the executionTime
    }
}

Este filtro funciona bien cuando está registrado con el estándar Mvc GlobalFilterCollection, pero cuando intento registrarlo con System.Web.Http.Filters.HttpFilterCollection Recibo un error que dice que no se puede asignar al tipo de parámetro System.Web.Http. Filtros.Filter.

Así que asumo que mi PerformanceTestFilter necesita heredar de algo que no sea ActionFilterAttribute para poder registrarse como un filtro webapi. Simplemente no estoy seguro de lo que tiene que ser.

Me imagino que necesitaré crear dos filtros individuales para trabajar con mvc y webapi respectivamente. Si hay una forma de crear un filtro que pueda registrarse para ambos, sería genial. Pero mi principal preocupación es simplemente hacer que funcione para webapi.

Gracias

Respuestas a la pregunta(1)

Su respuesta a la pregunta