2012-02-11 172 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無法注入私人財產。

相關問題