0
我在週五發佈了this question,因爲我無法弄清楚爲什麼我的電子郵件沒有發送出去。今天,爲了深入探索,我在我的forgotpassword
方法中設置了一些斷點。我發現user
變量返回null,但我不確定爲什麼?爲什麼我的用戶返回null?
public async Task<ActionResult> ForgotPassword(ForgotPasswordViewModel model)
{
if (ModelState.IsValid)
{
var user = await UserManager.FindByNameAsync(model.Email);
if (user == null)
{
// Don't reveal that the user does not exist or is not confirmed
return View("ForgotPasswordConfirmation");
}
// For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
// Send an email with this link
string code = await UserManager.GeneratePasswordResetTokenAsync(user.Id);
var callbackUrl = Url.Action("ResetPassword", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
await UserManager.SendEmailAsync(user.Id, "Reset Password", "Please reset your password by clicking <a href=\"" + callbackUrl + "\">here</a>");
return RedirectToAction("ForgotPasswordConfirmation", "Account");
}
// If we got this far, something failed, redisplay form
return View(model);
}
該網站的確將電子郵件地址存儲在數據庫中。我還希望確保我放入模型中的一個也是用戶使用的,它仍然返回null。在這個應用程序中登錄的不同之處在於我更改了登錄頁面以使用用戶名而不是電子郵件。
因爲UserManager.FindByNameAsync()對於'model.Email'中的任何值都返回null。如果您不想使用電子郵件,請不要引用電子郵件屬性... –
但是,如果找不到與用戶關聯的電子郵件?即使我將其更改爲用戶名,它仍會返回空值。 – Skullomania
顯然,用姓名搜索電子郵件時找不到用戶。查看數據庫中的用戶/登錄信息表。看看Name中存儲了什麼。查看電子郵件屬性中的內容。他們匹配嗎?不。這不是魔術,它不能自動計算出你的意圖。 – Will