Использование Ninject с поставщиком настраиваемой роли в приложении MVC3

Я пытаюсь использовать настраиваемого поставщика ролей в приложении 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)
    {
       ...

Я получаю эта ошибка при запуске приложения.

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. Любая помощь приветствуется.

9
задан Matt 29 June 2011 в 11:14
поделиться