Unity IoC fügt keine Abhängigkeit in den Web-API-Controller ein

Ich bin sehr neu mit Unity, aber mein problem ist, dass, Wann immer ich rufe meine web-service, bekomme ich eine exception, die besagt, dass

"Stellen Sie sicher, dass der controller hat einen parameterlosen public-Konstruktor"

Ich verfolgt habe mehrere tutorials und ich bekomme immer noch das gleiche Problem.

In der Register-Funktion meines WebApiConfig Klasse, ich habe

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

Hier ist mein 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 noch nicht registriert haben, jeden Controller, wie in jedem tutorial Forderungen, die ich nicht brauchen, dies zu tun. Hier ist meine eigentliche controller

public class Controller: ApiController
{
    private IValidator _validator;

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

    [HttpPost]
    public void ReceiveIPN()
    {

    }
}

Hat jemand irgendwelche Ideen, was kann ich falsch gemacht? Danke!

EDIT 1: Hier ist die "Implementierung" von der Validator-Klasse. Es ist ziemlich leer, weil ich nicht einführen wollen, ein Fehler hier, bis ich beschloss die Einheit Ausgabe.

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 der gesamte Fehler Antwort, die ich bekomme, wenn ich versuche zu rufen, die web-api-route mit Fiddler

{"message":"Ein Fehler ist aufgetreten.","exceptionMessage":"Ein Fehler
aufgetreten beim Versuch, einen Domänencontroller zu erstellen des Typs 'Controller'. Machen
sicher, dass der controller hat einen parameterlosen public
Konstruktor.","exceptionType":" - System.InvalidOperationException","stackTrace":"
bei
System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Erstellen(HttpRequestMessage
Anfrage, HttpControllerDescriptor controllerDescriptor Geben
controllerType)
System.Web.Http.Controller.HttpControllerDescriptor.CreateController(HttpRequestMessage
request) an
System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext()","innerException":{"message":"Ein
Fehler ist aufgetreten.","exceptionMessage":"Art" - Projekt.Controller'
keinen Standardwert
constructor","exceptionType":" - System.ArgumentException","stackTrace":"
System.Linq -.Ausdrücke.Ausdruck.Neue(Type Type) bei
System.Web.Http.Intern.TypeActivator.Erstellen[TBase](Typ
instanceType) bei
System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator(HttpRequestMessage
Anfrage, Type controllerType, Func`1& activator) an
System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Erstellen(HttpRequestMessage
Anfrage, HttpControllerDescriptor controllerDescriptor Geben
controllerType)"}}

InformationsquelleAutor der Frage Carlos Rodriguez | 2015-04-13

Schreibe einen Kommentar