Wie können Abhängigkeiten in einem HttpModule mit Ninject injiziert werden?

8

Wir führen ein Webforms-Projekt in meiner Firma aus und ich habe ein HttpModule, für das ich Abhängigkeiten auflösen muss.

Wir verwenden die Ninject.Web-Bibliothek, um Abhängigkeiten für Masterseiten, Seiten, Benutzersteuerelemente, Webdienste und HttpHandlers aufzulösen. Alle diese haben Basisklassen, die Sie im Ninject.Web-Namespace erben können:

  • MasterPageBase
  • PageBase
  • WebServiceBase
  • HttpHandlerBase
  • Und eine benutzerdefinierte, die wir hinzugefügt haben, da sie aus irgendeinem Grund nicht da war: UserControlBase

Ich kann jedoch keine HttpModuleBase finden. Es gibt ein NinjectHttpModule, aber das ist keine Basisklasse, es ist ein echtes Modul, das versucht, die Notwendigkeit, von Basisklassen in Seiten und Benutzersteuerelementen zu erben, zu beseitigen, aber es hat einige Fehler und wir verwenden es nicht.

>

Was ist der beste Weg, um meine Abhängigkeiten in meinem HttpModule zu lösen?

Wenn ich das google, kommt diese Frage auf der ersten Seite -_-

    
Chev 11.07.2011, 16:24
quelle

2 Antworten

2

Ich bin irgendwie erstaunt, dass niemand den ganzen Tag geantwortet hat! Sieht so aus, als hätte ich euch verblüfft:)

Nun, ich habe das Problem gelöst. Ich schrieb meine eigene Implementierung von IHttpModule und kompilierte sie selbst in die Ninject.Web-Assembly. Hier ist die Quelle der Basisklasse, die ich hinzugefügt habe:

%Vor%

Ich habe es einfach nach den anderen Basisklassen in der Ninject.Web Assembly modelliert. Es scheint wunderbar zu funktionieren. Machen Sie einfach Ihr HttpModule von Ninject.Web.HttpModuleBase und dann können Sie innerhalb Ihres Moduls die Eigenschaft injection verwenden:

%Vor%     
Chev 11.07.2011, 20:42
quelle
12

Phil Haack hat über einen Weg gebloggt Dies macht es möglich, die Konstruktorinjektion zu verwenden und dadurch zu vermeiden, dass Ihr HttpModule direkt von Ninject abhängt. Führen Sie in einem Standard NinjectHttpApplication Folgendes aus:

Schritt 1

Verwenden Sie Nuget, um das HttpModuleMagic -Paket zu Ihrem Webprojekt zu finden und hinzuzufügen.

Schritt 2

Schreiben Sie Ihre HttpModule , um die Konstruktorinjektion zu verwenden:

%Vor%

Schritt 3

Entfernen Sie das http-Modul aus Ihrer web.config:

%Vor%

Schritt 4

Bindungen einrichten:

%Vor%     
StriplingWarrior 20.09.2011 21:29
quelle