如何使用Autofac注入asp.net mvc3自定义成员资格提供程序?

tob*_*ias 4 c# asp.net-mvc autofac asp.net-mvc-3

我有一个使用Autofac和自定义成员资格提供程序的MVC3应用程序.

如果我尝试使用ctor注入提供程序,我会收到一个错误:'没有为此对象定义无参数构造函数.'

public class MyMemberShipProvider : MembershipProvider
    {

        IUserRepository userRepository;

  public MyMemberShipProvider(IUserRepository userRepository)
        {
            this.userRepository = userRepository;

        }
Run Code Online (Sandbox Code Playgroud)

Nei*_*ish 8

您无法注入内置提供程序(成员资格/角色).您可以将MVC 3 DependencyResolver与Autofac一起使用.

一个简单的例子......

public override bool ValidateUser(string username, string password)
{
    var userRepo = DependencyResolver.Current.GetService<IUserRepository>();
    return userRepo.ValidateUser(username, password);
}
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,这是服务定位器反模式,请参阅:http://bugsquash.blogspot.com/2010/11/windsor-managed-membershipproviders.html (3认同)