嗨我在启用自定义成员资格和角色提供程序时遇到了一些问题,我收到了以下错误:
在执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
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();
}
我的角色提供者:
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>
答案 0 :(得分: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);
}
答案 1 :(得分:1)
我遇到了同样的问题。我的解决方案是将存储库方法更改为Public。 Ninject不能注入私有财产。