Unterdrücken einer Abhängigkeit in Global.asax

8

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?

    
vtortola 01.04.2011, 10:21
quelle

4 Antworten

8

So machen wir es, ich habe ein paar Tests gemacht und mein AuthService scheint nur einmal in seinen Controller zu gehen:

%Vor%

Ich hoffe, es hilft!

    
VinnyG 13.04.2011, 00:59
quelle
4

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.

    
Remo Gloor 01.04.2011 14:48
quelle
-1

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%     
Zasz 01.04.2011 11:13
quelle
-1

Können Sie die Eigenschaft HttpApplication.Appliction verwenden?

%Vor%     
John Wathen 13.04.2011 00:12
quelle