Я пытаюсь реализовать имена пользователей на основе адресов электронной почты в AspNet.Identity для MVC5. Мои приложения работают, пока в системе зарегистрировано электронное имя/имя пользователя.UserManager.FindByEmail() return Null
Я только что обнаружил, что если пользователь не существует, и пытается войти в исключение брошено на линии 72.
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Source Error:
Line 71: //Add this to check if the email was confirmed.
Line 72: var userid = UserManager.FindByEmail(model.Email).Id;
Вот мой код.
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (ModelState.IsValid)
{
//Add this to check if the email was confirmed.
var userid = UserManager.FindByEmail(model.Email).Id;
// **Line 72. 'userid' is empty.**
// Here is my attempt but doesn't do anything.
if (string.IsNullOrEmpty(userid)) {
ModelState.AddModelError("","You are not registered!");
}
if (!UserManager.IsEmailConfirmed(userid))
{
ModelState.AddModelError("", "E-mail address has not been confirmed.");
return View(model);
}
}
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
}
Спасибо!
Та же проблема. На самом деле все методы Find * возвращают null по какой-то причине. Целевые пользователи были засеяны при создании приложения. – Ryan
Решено. Просто была неправильная конфигурация промежуточного ПО Auth. – Ryan