Я пытаюсь использовать пользовательский поставщик ролей в приложении MVC3.У меня уже есть членство в организации, работающее нормально, с помощью Ninject, но, похоже, не работает поставщик роли.Поставщик членства не требует конструктора без параметров, но поставщик роли делает это.Вот некоторые фрагменты кода:
Web.config
<membership>
<providers>
<clear/>
<add name="MyMembershipProvider" type="MyApp.Models.NHibernateMembershipProvider"
applicationName="myApp" />
</providers>
</membership>
<roleManager enabled="true">
<providers>
<add name="MyRolesProvider" type="MyApp.Models.NHibernateRoleProvider"
applicationName="myApp" />
</providers>
</roleManager>
У меня есть модуль Ninject.
public class MyNinjectModule : NinjectModule
{
public override void Load()
{
this.Bind<ISession>().ToMethod(
x => MyApp.MvcApplication.SessionFactoryData.GetCurrentSession());
// Respository
this.Bind<IUserRepository>().To<UserRepository>();
this.Bind<MembershipProvider>().To<NHibernateMembershipProvider>();
this.Bind<RoleProvider>().To<NHibernateRoleProvider>();
}
}
Настраиваемый поставщик членства
public class NHibernateMembershipProvider : MembershipProvider
{
private IUserRepository _repo;
public NHibernateMembershipProvider(IUserRepository repository)
{
_repo = repository;
}
...
Поставщик роли
public class NHibernateRoleProvider : RoleProvider
{
private IUserRepository _repo;
public NHibernateRoleProvider(IUserRepository repository)
{
_repo = repository;
}
...
Затем я настраиваю свой контроллер для запроса разрешения
[Authorize(Roles="Admin")]
public ActionResult Edit(int? id)
{
...
Я получаю эту ошибку при запускеapp.
Parser Error Message: No parameterless constructor defined for this object.
Source Error:
Line 49: <roleManager enabled="true">
Line 50: <providers>
Line 51: <add name="MyRolesProvider" type="MyApp.Models.NHibernateRoleProvider"
Line 52: applicationName="myApp" />
Line 53: </providers>
Я могу получить доступ к пользователям через провайдера членства, так что хранилище внедряется нормально, но поставщик ролей, похоже, другой.Почему поставщик ролей требует параметр без конструктора?Есть ли простой способ заставить поставщика ролей работать с Ninject.Любая помощь приветствуется.