2016-11-07 93 views
0

以下導致產生「用戶未找到」錯誤的代碼有問題。代碼的目的是允許登錄用戶更改他們的密碼。更改密碼時未找到用戶

[Authorize] 
public partial class TestController : Controller 
{ 
    UserManager<IdentityUser> userManager = 
new UserManager<IdentityUser>(new UserStore<IdentityUser>()); 

    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult ChangePass(ChangePassTestVM model) 
    { 
     if (ModelState.IsValid) 
     { 
      try 
      { 
       var id = Membership.GetUser().ProviderUserKey.ToString(); 
       var result = MembershipUser. userManager.ChangePassword(id, model.OldPassword, model.NewPassword); 
      } 
      catch (Exception exc) 
      { 
       return View(model); 
      } 
     } 
     return View(model); 
    } 
} 
+0

在該行放置斷點後,Membership.GetUser()。ProviderUserKey.ToString();的值是什麼? – CodeNotFound

+0

@CodeNotFound按以下格式預期0bff27e9-cdc1-4784-g352-8fa8fa143d61 – usefulBee

+1

這很奇怪。因此,請確保此Id存在於數據庫中,因此您也正在使用正確的數據庫。 – CodeNotFound

回答

0

如果您正在使用 - Microsoft.Aspnet.Identity 2版再有如果您有版本1,那麼你可以嘗試使用「RemovePassword一些更好的方法來重置密碼

string resetToken = await UserManager.GeneratePasswordResetTokenAsync(model.Id); 

IdentityResult passwordChangeResult = await UserManager.ResetPasswordAsync(model.Id, resetToken, model.NewPassword); 

「和」userManager「實例的」AddPassword「方法。

+0

這是一個簡單的會員 – usefulBee