如果我想立即发送电子邮件,确认新电子邮件,我该怎么办呢?
下面的代码就是我在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);
我认为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");
}
答案 0 :(得分:2)
根据您提供的信息,我想问题可能是用户未经过身份验证,因此User.Identity
将返回null,因此NullReferenceException
。
您可以尝试使用您在动作参数userId
中接收的ID来获取用户信息。
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());
var user = UserManager.FindById(userId); //use the received parameter to get the user
await UserManager.SendEmailAsync(userId, "API", "API Code is: " + user.ApiCode);
return View(result.Succeeded ? "ConfirmEmail" : "Error");
}
希望这有帮助!