2016-07-18 2 views
2

Beim Registrieren eines Objekts mit Autofac und Auflösen in Middleware und erneut in einem Controller ist die Instanz anders. Instanzen werden pro Lebensdauerbereich registriert.Autofac-Bereich in ASP.NET Core scheint zwischen Middleware und Controllern zu unterscheiden

Ich habe hier ein Repro-Projekt gemacht https://github.com/jakkaj/AutofacResolveIssue.

Die App legt einen Wert für den IUserService in der Middleware fest und versucht später, diesen Wert im ValuesController zu lesen.

Die gleiche Technik funktionierte in älteren Versionen von ASP.NET mit Autofac.

Irgendwelche Ideen, was ist los?

Prost!

Jordanien.

EDIT: Es scheint, die eingebaute DI hat das gleiche Problem!

Antwort

3

Okay, also habe ich den Fehler gemacht, meine Abhängigkeit in den Konstruktor der Middleware zu injizieren.

Sie sollten Abhängigkeiten in Invoke einfügen.

Das gesamte Middleware-Objekt ist Singleton über alle App-Instanzen hinweg!

+1

Vielen Dank für Ihre Rückkehr und Aktualisierung für diese! Ich habe mich gerade mit der Anforderungs-Pipeline und der Middleware in ASP.NET Core vertraut gemacht und kämpfe seit einigen Stunden mit diesem Problem. –

+0

Hier finden Sie weitere Informationen ... https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware?tabs=aspnetcore2x Es scheint, dass Middleware, die durch Implementierung der IMiddleware-Schnittstelle implementiert wird, einmal pro Anfrage erstellt wird und leiden nicht unter dieser Einschränkung. – Gopal

Verwandte Themen