MVC Membership.UpdateUser(u);不支持指定的方法

时间:2014-02-13 22:55:15

标签: asp.net-mvc

我试图让用户更改他的电子邮件,但是当我尝试更新数据库时,我得到一个例外:不支持指定的方法。

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult ManageEmail(LocalEmailModel model)
{
    //UserProfile u = new UserProfile();

    if (ModelState.IsValid)
    {
        bool TryPasswordNow;
        var user = Membership.GetUser(User.Identity.Name);

        MembershipUser u = Membership.GetUser(User.Identity.Name);

        try
        {
            TryPasswordNow = WebSecurity.ChangePassword(User.Identity.Name,   model.OldPassword, model.OldPassword);
        }

        catch (Exception)
        {
            TryPasswordNow = false;
        }

        if (TryPasswordNow == true)
        {
            user.Email = model.NewEmail;
            db.SaveChanges();

            u.Email = model.NewEmail;
            Membership.UpdateUser(u);
        }

        return RedirectToAction("Manage", "Account");
    }
    return RedirectToAction("Manage", "Account");
}

正如您所见,我已尝试过db.savechanges和membership.updateuser。第一个通过,但没有更改电子邮件,第二个给了我一个例外。这些都不适用吗?为什么我的变更没有注册?感谢..

1 个答案:

答案 0 :(得分:0)

如果您使用的是SimpleMembership提供程序(请检查您的web.config),这个问题可能是duplicate of another question

为了扩展这一点,调用SaveChanges()的原因只是因为Entity Framework没有跟踪MembershipUser对象,所以调用它对数据库没有影响。