Unity IoC no inyecta dependencia en el controlador de API web

Soy muy nuevo en el uso de Unity, pero mi problema es que cada vez que llamo a mi servicio web, recibo una excepción que indica que

"Asegúrese de que el controlador tenga un constructor público sin parámetros"

He seguido varios tutoriales y sigo teniendo el mismo problema.

En la función de registro de mi clase WebApiConfig, tengo

var container = new UnityContainer();
container.RegisterType<IValidator, Validator>(new HierarchicalLifetimeManager());
config.DependencyResolver = new UnityResolver(container);

Aquí está mi clase UnityResolver

using Microsoft.Practices.Unity;
using System;
using System.Collections.Generic;
using System.Web.Http.Dependencies;

public class UnityResolver : IDependencyResolver
{
    protected IUnityContainer container;

    public UnityResolver(IUnityContainer container)
    {
        if (container == null)
        {
            throw new ArgumentNullException("container");
        }
        this.container = container;
    }

    public object GetService(Type serviceType)
    {
        try
        {
            return container.Resolve(serviceType);
        }
        catch (ResolutionFailedException)
        {
            return null;
        }
    }

    public IEnumerable<object> GetServices(Type serviceType)
    {
        try
        {
            return container.ResolveAll(serviceType);
        }
        catch (ResolutionFailedException)
        {
            return new List<object>();
        }
    }

    public IDependencyScope BeginScope()
    {
        var child = container.CreateChildContainer();
        return new UnityResolver(child);
    }

    public void Dispose()
    {
        container.Dispose();
    }
}

No he registrado ningún controlador, ya que cada tutorial afirma que no necesito hacer esto. Aquí está mi controlador real

public class Controller: ApiController
{
    private IValidator _validator;

    public Controller(IValidator validator)
    {
        this._validator = validator;
    }

    [HttpPost]
    public void ReceiveIPN()
    {

    }
}

¿Alguien tiene alguna idea de lo que puedo estar haciendo mal? ¡Gracias!

EDITAR 1: Aquí está la "implementación" de la clase Validator. Está bastante vacío, porque no quería introducir un error aquí hasta que resolviera el problema de Unity.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;


public class Validator: IValidator
{
    public bool ValidateIPN(string body)
    {
        throw new NotImplementedException();
    }
}

EDITAR 2: Aquí está la respuesta de error completa que recibo cuando intento llamar a la ruta de la API web usando Fiddler

{"message": "Se ha producido un error", "exceptionMessage": "Se produjo un error al intentar crear un controlador de tipo 'Controller'. Asegúrese de que el controlador tenga un constructor público sin parámetros", "exceptionType": "System.InvalidOperationException", "stackTrace": "en System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create (HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType) en System.Web.Http.Controllers.Destrol.Tttler. System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext () "," innerException ": {" message ":" Ha ocurrido un error "," exceptionMessage ":" Escriba 'Project.Controller' no tiene un valor predeterminado constructor "," exceptionType ":" System.ArgumentException "," stackTrace ":" en System.Linq.Expressions.Expression.New (Type type) en System.Web.Http.Internal.TypeActivator.Create [TBase] (Type instanceType ) en System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceO rActivator (solicitud HttpRequestMessage, tipo controllerType, Func`1 y activador) en System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create (solicitud HttpRequestMessage, HttpControllerDescriptor controllerDescriptor, tipo controllerType) "}}

Respuestas a la pregunta(4)

Su respuesta a la pregunta