ASP.NET MembershipProvider and StructureMap

Posted by Ben on Stack Overflow See other posts from Stack Overflow or by Ben
Published on 2010-05-09T22:14:07Z Indexed on 2010/05/09 22:18 UTC
Read the original article Hit count: 492

I was using the default AspNetSqlMembershipProvider in my application. Authentication is performed via an AuthenticationService (since I'm also supporting other forms of membership like OpenID).

My AuthenticationService takes a MembershipProvider as a constructor parameter and I am injecting the dependency using StructureMap like so:

For<MembershipProvider>().Use(Membership.Provider);

This will use the MembershipProvider configured in web.config. All this works great.

However, now I have rolled my own MembershipProvider that makes use of a repository class. Since the MembershipProvider isn't exactly IoC friendly, I added the following code to the MembershipProvider.Initialize method:

_membershipRepository = ObjectFactory.GetInstance<IMembershipRepository>();

However, this raises an exception, like StructureMap hasn't been initialized (cannot get instance of IMembershipRepository). However, if I remove the code and put breakpoints at my MembershipProvider's initialize method and my StructureMap bootstrapper, it does appear that StructureMap is configured before the MembershipProvider is initialized.

My only workaround so far is to add the above code to each method in the MembershipProvider that needs the repository. This works fine, but I am curious as to why I can't get my instance in the Initialize method. Is the MembershipProvider performing some internal initialization that runs before any of my own application code does?

Thanks Ben

© Stack Overflow or respective owner

Related posts about asp.net-membership

Related posts about structuremap