对象引用未设置为对象的实例,Unity Dependency Resolver

时间:2013-05-24 01:36:41

标签: asp.net-mvc-3 dependency-injection unity-container custom-membershipprovider

我的IUserService为空,不知道发生了什么。 这是我的AccountController

private readonly ICustomMembershipProvider _membershipProvider;

public AccountController(ICustomMembershipProvider provider)
{
     _membershipProvider = provider;
}
//other code omitted

我的CustomMembershipProvider

public class CustomMembershipProvider : MembershipProvider, ICustomMembershipProvider
{
private IUserService _userService;

    public CustomMembershipProvider()
        : this(DependencyResolver.Current.GetService<IUserService>())
    {
    }

    public CustomMembershipProvider(IUserService userService)
    {
        _userService = userService;
    }
//other code omitted

当我尝试注册用户时,调用了以下方法,我的_userService为空,这就是造成错误的原因,但不确定原因是什么。

public override MembershipUser GetUser(string username, bool userIsOnline)
{
    var tempUser = _userService.GetByName(username);
//other code omitted

所有其他依赖项都已成功解析

1 个答案:

答案 0 :(得分:1)

添加此答案,因为我花了几个小时试图弄清楚这个错误所指的是什么。我的项目有这个警告:Warning: Found conflicts between different versions of the same dependent assembly,因为这是一个警告,我没有注意它。好吧,显然这是所有问题的根源,我的Project.Web使用的是Mvc 3.0,而我的Project.Services使用的是Mvc 4.0,这就是DependencyResolver.Current.GetService<IUserService>()无效的原因。在我将Project.Services回滚到Mvc 3.0后,我的整个解决方案就像一个魅力!获得的经验教训:注意警告。