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%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:
Um die Dinge jedoch einfacher zu machen, sollten Sie die WebRequestLifestyle
als DefaultScopedLifestyle
:
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.
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%Tags und Links asp.net-mvc c# dependency-injection simple-injector