2016-09-16 3 views
1

기본 asp.net ID에 대해 ForgotPassword 메서드에 문제가 있습니다. 코드를 단계별로 실행할 때 사용자의 전자 메일 주소가 aspnetusers 테이블에 있음을 확인했지만 var user = await UserManager.FindByNameAsync(model.Email); 줄은 null을 반환합니다. Visual Studio에서 FindByNameAsync 메서드로 들어갈 수없는 이유를 모르겠습니다. 여기서 무슨 일이 일어나고 있는지 확실하지 않은가요?ASP.NET 'FindByNameAsync'가 null을 반환합니까?

public async Task<ActionResult> ForgotPassword(ForgotPasswordViewModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     var user = await UserManager.FindByNameAsync(model.Email); 
     if (user == null || !(await UserManager.IsEmailConfirmedAsync(user.Id))) 
     { 
      // Don't reveal that the user does not exist or is not confirmed 
      return View("ForgotPasswordConfirmation"); 
     } 

     var 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 here: <a href=\"" + callbackUrl + "\">link</a>");   
     return View("ForgotPasswordConfirmation"); 
    } 

    // If we got this far, something failed, redisplay form 
    return View(model); 
} 
+0

사용해야 (https://msdn.microsoft.com/en-us/library/dn613101 (V = vs.108)가 .ASPX)이 방법은 소요 사용자 이름. 사용자 이름이 이메일 주소와 같은지 확실하지 않지만 대개는 그렇지 않습니다. 어쩌면 FindByNameAsync가 기대하거나 FIndbyEmailAsync를 사용하는 사용자 ID 인 모델과 다른 필드를 시도해보십시오. –

+0

이 방법을 사용해야합니다. var user = await UserManager.FindByEmailAsync (model.Email); 귀하의 매개 변수가 이메일이기 때문입니다. –

+0

나는 그것을 놓쳤다 고 생각할 수 없다. 나를 올바른 방향으로 가리켜 주셔서 감사합니다. – PixelPaul

답변

관련 문제