我试图在asp.net中设置当前用户的电子邮件
Membership.GetUser().Email = txtEmail.Text;
Membership.UpdateUser(Membership.GetUser(User.Identity.Name));
但下次我读取当前用户的电子邮件时,它没有改变
我这样读了
Membership.GetUser().Email
答案 0 :(得分:1)
方法Membership.GetUser()
返回一个新的用户实例。您的第一行是更改电子邮件属性,然后通过丢弃该更改继续。您的第二行将使用旧用户再次获取用户,并进行更新。
Membership.UpdateUser的文档包含更新电子邮件属性的示例。这一切都归结为将同一个用户实例从Membership.GetUser()
传递到Membership.UpdateUser
。
// GetUser() without parameter returns the current logged in user.
MembershipUser u = Membership.GetUser();
u.Email = email;
Membership.UpdateUser(u);
如果您有一个自定义MembershipProvider使用电子邮件字段进行识别(并使用电子邮件+密码登录),这将导致问题,那么用户在下次登录之前仍然会使User.Identity.Name
等于旧电子邮件(或者他们获得了一个新的Forms-cookie)。
答案 1 :(得分:0)
类似的东西:
MembershipUser u = Membership.GetUser(User.Identity.Name);
u.Email = email;
System.Web.Security.Membership.UpdateUser(u);
看起来您并没有用当前用户名来获取用户。