7

Hi i got some problems enabling custom Membership and Role Provider, i got following error:

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.

It's pointing to my mvc3.ninject kernel.Inject(Membership.Provider)

My MVC3.Ninject in 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();            
}  

My RoleProvider:

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

My MembershipProvider:

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

My WebConfig file:

 <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>
Community
  • 1
  • 1
Nozi
  • 71
  • 1
  • 2
  • http://stackoverflow.com/questions/8248545/custom-role-provider-using-di-ninject-throwing-error http://stackoverflow.com/questions/6519720/using-ninject-with-a-custom-role-provider-in-an-mvc3-app http://stackoverflow.com/questions/8409109/how-to-inject-repositories-into-a-custom-membershipprovider – Mauricio Scheffer Feb 11 '12 at 15:54
  • http://stackoverflow.com/questions/2963611/how-can-you-inject-an-asp-net-mvc2-custom-membership-provider-using-ninject ... and many more – Mauricio Scheffer Feb 11 '12 at 15:56
  • yeah, i saw all of them, but still mine application cant start – Nozi Feb 11 '12 at 15:57
  • I was helped by this version of the question: http://stackoverflow.com/questions/14412279/how-to-configure-ninject-for-mvc4-custom-membership-provide – Michael La Voie May 01 '13 at 23:00

2 Answers2

8

You have to setup the bindings before you inject the Providers.

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);
}
Remo Gloor
  • 32,665
  • 4
  • 68
  • 98
1

I had the same problem. My solution was to change the repository method to be Public. Ninject cannot inject into a private property.

Stian K
  • 11
  • 2