Unity IoC injiziert keine Abhängigkeit in den Web API Controller

Ich bin sehr neu in der Verwendung von Unity, aber mein Problem ist, dass ich bei jedem Aufruf meines Webdienstes die folgende Ausnahme erhalte:

"Stellen Sie sicher, dass der Controller einen parameterlosen öffentlichen Konstruktor hat"

Ich habe mehrere Tutorials absolviert und erhalte immer noch das gleiche Problem.

In der Register-Funktion meiner WebApiConfig-Klasse habe ich

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

Hier ist meine UnityResolver Klasse

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();
    }
}

Ich habe keine Controller registriert, da in jedem Tutorial behauptet wird, dass ich dies nicht tun muss. Hier ist mein eigentlicher Controller

public class Controller: ApiController
{
    private IValidator _validator;

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

    [HttpPost]
    public void ReceiveIPN()
    {

    }
}

Hat jemand eine Idee, was ich falsch machen kann? Vielen Dank

EDIT 1: Hier ist die "Implementierung" der Validator-Klasse. Es ist ziemlich leer, weil ich hier keinen Bug einführen wollte, bis ich das Unity-Problem gelöst habe.

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


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

EDIT 2: Hier ist die gesamte Fehlerantwort, die ich erhalte, wenn ich versuche, die Web-API-Route mit Fiddler @ aufzurufe

{"message": "Ein Fehler ist aufgetreten.", "exceptionMessage": "Beim Erstellen eines Controllers vom Typ 'Controller' ist ein Fehler aufgetreten. Stellen Sie sicher, dass der Controller über einen parameterlosen öffentlichen Konstruktor verfügt.", "exceptionType" : "System.InvalidOperationException", "stackTrace": "bei System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create (HttpRequestMessage-Anforderung, HttpControllerDescriptor controllerDescriptor, Typ controllerType) bei System.Web.Http.ControllerCreateRec at System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext () "," innerException ": {" message ":" Ein Fehler ist aufgetreten. "," exceptionMessage ":" Type 'Project.Controller' hat kein Standardkonstruktor "," exceptionType ":" System.ArgumentException "," stackTrace ":" bei System.Linq.Expressions.Expression.New (Typtyp) bei System.Web.Http.Internal.TypeActivator.Create [TBase] (Typ instanceType) unter System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstance OrActivator (HttpRequestMessage-Anforderung, Typ controllerType, Func`1 & activator) bei System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create (HttpRequestMessage-Anforderung, HttpControllerDescriptor controllerDescriptor, Typ controllerType)}}

Antworten auf die Frage(8)

Ihre Antwort auf die Frage