我的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
所有其他依赖项都已成功解析
答案 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后,我的整个解决方案就像一个魅力!获得的经验教训:注意警告。