Simple Injector wird für MVC- und Web-API-Controller initialisiert

8

Ich habe einen Web-API-Controller, der über einige Ressourcen verfügt. Aus späterer Notwendigkeit habe ich einen MVC-Controller hinzugefügt, jetzt brauche ich dieselben Ressourcen auch dort. Hier ist meine ursprüngliche Konfiguration:

%Vor%

Kann ich DI für MVC Controller auch an derselben Stelle registrieren? Kann ich den Container wiederverwenden?

Update: Ich muss in der Nähe sein, aber jetzt bekomme ich einen Fehler im Web-API-Controller, dass ich einen parameterlosen Konstruktor brauche; Ich habe versucht, es hinzuzufügen, aber dann wird natürlich nichts injiziert

%Vor%     
FailedUnitTest 31.05.2016, 14:30
quelle

2 Antworten

10
  

Kann ich den Container wiederverwenden?

Ja, Sie können und Sie sollten. Jede App-Domäne sollte normalerweise eine Container-Instanz haben.

Die MVC-Integrationsdokumentation der Simple Injector-Dokumentation erklärt, dass Sie den MVC DependencyResolver einstellen sollten. wie folgt:

%Vor%

Um die Dinge jedoch einfacher zu machen, sollten Sie die WebRequestLifestyle als DefaultScopedLifestyle :

registrieren %Vor%

Dies funktioniert auch für die Web-API, da Sie die Web-API ausschließlich innerhalb von IIS ausführen.

Sie müssen also beide DependencyResolver konfigurieren.

    
Steven 31.05.2016, 14:46
quelle
0

Ich möchte meine zwei Cent hinzufügen, denn nachdem ich Steven's Antwort und die Kommentare darunter gelesen habe, habe ich immer noch Fehler bekommen. Letztendlich hat das mit der Reihenfolge zu tun, in der die Dinge konfiguriert werden.

%Vor%

WebApiConfig:

%Vor%     
CularBytes 16.10.2016 20:12
quelle