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:
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 -_-
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:
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:
Verwenden Sie Nuget, um das HttpModuleMagic
-Paket zu Ihrem Webprojekt zu finden und hinzuzufügen.
Schreiben Sie Ihre HttpModule
, um die Konstruktorinjektion zu verwenden:
Entfernen Sie das http-Modul aus Ihrer web.config:
%Vor%Bindungen einrichten:
%Vor%Tags und Links c# asp.net dependency-injection webforms ninject