我有一个用于验证用户身份的api控制器
public class UsersData : Controller
{
private ApplicationDbContext dbContext = new ApplicationDbContext();
private readonly LoggingController logger = (LoggingController)LogManager.GetCurrentClassLogger(typeof(LoggingController));
private ApplicationUserManager _userManager;
public UsersData()
{
logger.ConfigureLogger();
logger.SetApplicationName(ConfigurationManager.AppSettings["AppName"]);
}
public ApplicationUserManager UserManager
{
get
{
return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
private set
{
_userManager = value;
}
}
public bool AuthenticateUser(LoginDTO Input)
{
var user = dbContext.Users.SingleOrDefault(u => u.UserName == Input.Email);
var passwordHash = UserManager.PasswordHasher.HashPassword(Input.Password);
if(passwordHash == user.PasswordHash)
{
return true;
}
else
{
return false;
}
}
}
但是,当我通过邮递员访问http://localhost:9000/api/authentication?username=user@onae.com&password=1时,它返回此错误$exception {"Object reference not set to an instance of an object."} System.NullReferenceException
我做错什么了吗?看来问题出在返回null的UserManager中?但是我不确定该如何解决。
return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
这一行是返回null的那一行。如何重新初始化用户管理器?我以为我已经做到了。