2016-11-07 128 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