Ich habe am Freitag this question gepostet, weil ich nicht herausfinden konnte, warum meine E-Mail nicht verschickt wurde. Heute, in einem Versuch, ein wenig tiefer zu graben, habe ich einige Breakpoints in meiner forgotpassword
Methode eingerichtet. Ich habe festgestellt, dass die user
Variable Null zurückgibt, aber ich bin nicht ganz sicher warum?Warum gibt mein Benutzer null zurück?
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);
}
Die Website speichert E-Mail-Adressen in der Datenbank. Ich schaute auch, um sicherzustellen, dass derjenige, den ich in das Modell einfügte, auch einer war, der von einem Benutzer verwendet wurde, und es gab immer noch Null zurück. Die einzige Sache, die bei der Anmeldung in dieser Anwendung anders ist, ist, dass ich die Anmeldeseite so geändert habe, dass sie Benutzername statt E-Mail verwendet.
Weil 'UserManager.FindByNameAsync()' Null zurückgibt für den Wert, der in 'model.Email' steht. Wenn Sie keine E-Mail verwenden möchten, verweisen Sie nicht auf die E-Mail-Eigenschaft ... –
Aber sollte die E-Mail nicht mit dem Benutzer verknüpft sein? Selbst wenn ich es in Benutzername geändert habe, gibt es immer noch null zurück. – Skullomania
Offensichtlich wird der Benutzer nicht gefunden, wenn er mit seiner E-Mail nach Namen sucht. Sehen Sie sich die Benutzer-/Login-Infotabelle in der Datenbank an. Schau dir an, was in Name gespeichert ist. Sehen Sie sich an, was sich in der Eigenschaft E-Mail befindet. Passen sie zusammen? Nee. Das ist keine Magie, es kann deine Absicht nicht automatisch herausfinden. – Will