ASP.NET MVC 3 Ninject自定义成员身份和角色提供者

Noz*_*ozi 7 roleprovider membership-provider ninject-2 asp.net-mvc-3

嗨,我在启用自定义成员资格和角色提供程序时出现了一些问

在执行当前Web请求期间发生了未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

System.InvalidOperationException:找不到默认成员资格提供程序.

它指向我的mvc3.ninject kernel.Inject(Membership.Provider)

我在app_start中的MVC3.Ninject:

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();            
}  
Run Code Online (Sandbox Code Playgroud)

我的角色提供者:

public class DziennikRoleProvider : RoleProvider
{
    [Inject]
    private IUzytkownicyRepository repository { get; set;}
Run Code Online (Sandbox Code Playgroud)

我的会员提供者:

public class DziennikMembershipProvider : MembershipProvider
{
    [Inject]
    private IUzytkownicyRepository repository { get; set; }
Run Code Online (Sandbox Code Playgroud)

我的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>
Run Code Online (Sandbox Code Playgroud)

Rem*_*oor 8

您必须注入提供程序之前设置绑定.

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);
}
Run Code Online (Sandbox Code Playgroud)