2012-02-11 168 views
6

嗨,我有一些问题,启用自定义成员资格和角色提供程序,我得到了以下错误:ASP.NET MVC 3 Ninject自定义成员资格和角色提供

An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

System.InvalidOperationException: Default Membership Provider could not be found.

它指着我的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();    
} 

我RoleProvider:

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

我的MembershipProvider:

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

http://stackoverflow.com/questions/8248545/custom-role-provider-using-di-ninject-throwing-error http://stackoverflow.com/questions/6519720/using-ninject-with-a-自定义角色提供商在一个mvc3-app http://stackoverflow.com/questions/8409109/how-to-inject-repositories-into-a-custom-membershipprovider – 2012-02-11 15:54:17

+0

http://stackoverflow.com/questions/2963611 /你怎么能注入一个asp-net-mvc2-custom-membership-provider-using-ninject ...还有更多 – 2012-02-11 15:56:30

+0

是的,我看到了所有这些,但仍然是我的应用程序无法启动 – Nozi 2012-02-11 15:57:59

回答

7

你必须设置绑定你注入提供商之前

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

我有同样的问题。我的解决方案是将存储库方法更改为Public。 Ninject无法注入私人财产。

相关问题