ASP.NET MVC 3 Ninject Пользовательское членство и поставщик ролей - PullRequest
7 голосов
/ 11 февраля 2012

Привет, у меня возникли проблемы с включением пользовательского членства и поставщика ролей, я получил следующую ошибку:

Произошло необработанное исключение во время выполнения текущего веб-запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде.

System.InvalidOperationException: поставщик членства по умолчанию не найден.

Это указывает на мой mvc3.ninject kernel.Inject(Membership.Provider)

Мой MVC3.Ninject в app_start:

private static void RegisterServices(IKernel kernel)
{
    kernel.Inject(Membership.Provider);
    kernel.Inject(Roles.Provider);
    kernel.Bind<IUnitOfWork>().To<EFContext>().InRequestScope();
    kernel.Bind<IUzytkownicyRepository>().To<UzytkownicyRepository>().InRequestScope();            
}  

Мой RoleProvider:

public class DziennikRoleProvider : RoleProvider
{
    [Inject]
    private IUzytkownicyRepository repository { get; set;}

Моя подпискаПоставщик:

public class DziennikMembershipProvider : MembershipProvider
{
    [Inject]
    private IUzytkownicyRepository repository { get; set; }

Мой файл WebConfig:

 <membership defaultProvider="DziennikMembershipProvider">
  <providers>
    <clear/>
    <add name="DziennikMembershipProvider" type="Dziennik_MVC.Helpers.DziennikMembershipProvider, Dziennik_MVC" connectionStringName="EFDbContext"
         applicationName="/" />
  </providers>
</membership>

<profile>
  <providers>
    <clear/>
  </providers>
</profile>

<roleManager defaultProvider="DziennikRoleProvider" enabled="true" cacheRolesInCookie="true">
  <providers>
    <clear />
    <add name="DziennikRoleProvider" type="Dziennik_MVC.Helpers.DziennikMembershipProvider, Dziennik_MVC" connectionStringName="EFDbContext" />
  </providers>
</roleManager>

Ответы [ 2 ]

8 голосов
/ 16 февраля 2012

Вам необходимо установить привязки до , когда вы вводите провайдеров.

private static void RegisterServices(IKernel kernel)
{
    kernel.Bind<IUnitOfWork>().To<EFContext>().InRequestScope();
    kernel.Bind<IUzytkownicyRepository>().To<UzytkownicyRepository>().InRequestScope();

    kernel.Inject(Membership.Provider);
    kernel.Inject(Roles.Provider);
}
1 голос
/ 07 мая 2012

У меня была такая же проблема. Мое решение состояло в том, чтобы изменить метод хранилища на Public. Ninject не может быть введен в частную собственность.

...