Autofac und ASP.Net MVC 4 Web API

8

Ich verwende Autofac für IoC in meinem ASP.Net MVC 4-Projekt. Autofac hat Probleme, das Repository zu initialisieren und es an den API Controller zu übergeben.

Ich bin mir sicher, dass etwas in meiner Konfiguration fehlt.

Hier ist der Fehler, den ich bekomme, wenn ich zu: https://localhost:44305/api/integration

navigiere %Vor%

Hier sind einige relevante Code-Teile:

IoC Bootstrapper:

%Vor%

IRepository:

%Vor%

SharePoint-Repository:

%Vor%

IntegrationController:

%Vor%

IEntity:

%Vor%

Entität:

%Vor%

Integration:

%Vor%     
Moon 11.03.2013, 18:05
quelle

1 Antwort

9

Sie haben Ihre IRepository falsch registriert. Mit der Zeile:

%Vor%

Sie haben Autofac gesagt, dass wenn jemand eine IRepository<IEntity> anfordert, geben Sie ihm eine SharePointRepository<IEntity> , aber Sie verlangen eine konkrete IRepository<Integration> , damit Sie eine Ausnahme bekommen.

Was Sie brauchen, ist die allgemeine Registrierungsfunktion von Autofac . Ändern Sie Ihre Registrierung zu:

%Vor%

Es funktioniert so, wie Sie es erwarten würden, wenn Sie nach einem IRepository<Integration> fragen, es wird ein SharePointRepository<Integration> geben.

Sie haben auch noch ein zweites Problem: Ihr SharePointRepository hat nur einen internal -Konstruktor.

Autofac sucht standardmäßig nur nach public -Konstruktoren, also ändern Sie entweder Ihren Konstruktor und die Klasse in public oder Sie müssen Autofac anweisen, nach nicht-öffentlichen Konstruktoren mit der FindConstructorsWith -Methode zu suchen:

%Vor%     
nemesv 11.03.2013, 19:12
quelle