Если я пытаюсь отправить электронное письмо сразу, новое письмо было подтверждено, как мне это сделать? Кусок кода ниже - это то, что у меня есть в методе ConfirmEmail
. Когда я запускаю код, я получаю Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
по адресу await UserManager.SendEmailAsync(userId, "API", "API Code is: " + user.ApiCode);
Отправить электронное письмо от метода async
Я думаю, UserManager.FindById
ничего не возвращает, но не уверен, как это сделать.
Любые указатели/идеи помогут.
public async Task<ActionResult> ConfirmEmail(string userId, string code)
{
if (userId == null || code == null)
{
return View("Error");
}
var result = await UserManager.ConfirmEmailAsync(userId, code);
var user = UserManager.FindById(User.Identity.GetUserId());
await UserManager.SendEmailAsync(userId, "API", "API Code is: " + user.ApiCode);
return View(result.Succeeded ? "ConfirmEmail" : "Error");
}
Я предполагаю, что Пользователь еще не аутентифицирован, поэтому User.Identity является null и, следовательно, исключает NullReferenceException. Вы пробовали var user = UserManager.FindById (userId); вместо? –
Вы не проверили, является ли 'user' нулевым до его использования. – Adrian
вы отлаживали ?. Как вы реализовали процесс входа пользователя в систему? вы используете свою собственную реализацию MembershipProvider? – jmesolomon