Verwenden von Ninject mit einem benutzerdefinierten Rollenanbieter in einer MVC3-App

8

Ich versuche, einen benutzerdefinierten Rollenanbieter in einer MVC3-App zu verwenden. Ich habe bereits den Mitgliedschaftsprovider, der mit Ninject funktioniert, aber ich kann nicht scheinen, dass der Rollesprovider funktioniert. Der Mitgliedschaftsanbieter erfordert keinen parameterlosen Konstruktor, sondern den Rollenanbieter. Hier einige Code-Schnipsel:

Web.config

           

%Vor%

Ich habe ein Ninject-Modul.

%Vor%

Der benutzerdefinierte Mitgliedschaftsanbieter

%Vor%

Der Rollenanbieter

%Vor%

Ich konfiguriere dann meinen Controller, um eine Autorisierung zu verlangen

%Vor%

Ich erhalte diesen Fehler beim Starten der App.

%Vor%

Ich kann über den Mitgliedschaftsprovider auf die Benutzer zugreifen, sodass das Repository korrekt importiert wird, aber der Rollenanbieter scheint anders zu sein. Warum benötigt der Rollenanbieter einen Parameter ohne Konstruktor? Gibt es eine einfache Möglichkeit, den Rollenanbieter mit Ninject zu arbeiten? Jede Hilfe wird geschätzt.

    
Matt 29.06.2011, 11:14
quelle

2 Antworten

16

Da der Rollenanbieter, in diesem Fall der NHibernateRoleProvider, vom ASP.NET-Framework instanziiert wird, ist die beste Lösung, das Service-Locator-Muster zu verwenden. Das Service-Locator-Pattern wird normalerweise als Anti-Pattern betrachtet, aber manchmal muss man pragmatisch sein und akzeptierte die Einschränkung des verwendeten Frameworks (in diesem Fall das ASP.NET Framework).

Angenommen, Sie verwenden eine Implementierung von IDependencyResolver Schnittstelle für Ninject. Der folgende Code sollte funktionieren.

%Vor%     
mrydengren 30.06.2011, 04:31
quelle
2

Wenn Sie das nuget-Paket Ninject.Web.Mvc verwenden, können Sie alternativ die Property-Injection für Ihren Rollenanbieter verwenden, wie hier dargestellt:

ASP.NET MVC 3 Ninject Benutzerdefinierte Mitgliedschaft und Rollenanbieter

    
viggity 10.04.2013 03:20
quelle