Ich starte eine Webanwendung mit MVC3 und Ninject. Es gibt eine Abhängigkeit, die ich auch in der Datei Global.asax brauche, die ein Singleton sein muss.
Ich dachte, es sollte so sein:
%Vor% Aber dann habe ich gesehen, dass _auth
null ist, wenn MvcApplication_AuthenticateRequest
aufgerufen wird.
Dann habe ich es so versucht:
%Vor%Aber jetzt kann ich sehen, dass der Konstruktor mehrere Male aufgerufen wird, daher werde ich mehrere IKennel haben, und ich denke, dass Singleton-Instanzen in meinem Anwendungsbereich nicht so einfach sind.
Wie soll ich das machen? Verwenden Sie eine statische Variable?
Die MVC-Erweiterung fügt die HttpApplication standardmäßig ein. Aber nur Immobilieninjektion kann verwendet werden! Fügen Sie einfach eine Eigenschaft hinzu, die mit dem Inject-Attribut versehen ist.
Verschieben Sie den Code aus dem Konstruktor in die Methode Application_Start
. Ich glaube, selbst wenn mehrere HttpApplication-Instanzen erstellt werden, wird Application_Start nur einmal aufgerufen, und das auch nur für die erste Instanz. Lass es mich wissen, wenn es dein Problem gelöst hat.
Dies sind die verschiedenen Event-Handler, die Sie möglicherweise in Ihrem Global.asax.cs haben können:
%Vor%Können Sie die Eigenschaft HttpApplication.Appliction verwenden?
%Vor%Tags und Links asp.net-mvc asp.net-mvc-3 ninject ninject-extensions