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.
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%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
Tags und Links asp.net-mvc-3 ninject roleprovider