如何在 ASP.NET 会员中设置当前用户的电子邮件地址?

How to set the current users email address in ASP.NET Membership?

我正在尝试从 asp.net

中设置当前用户的电子邮件
Membership.GetUser().Email = txtEmail.Text;
Membership.UpdateUser(Membership.GetUser(User.Identity.Name));

但是下一次我读到当前用户的Email它并没有改变

我是这样读的

Membership.GetUser().Email

类似于:

MembershipUser u = Membership.GetUser(User.Identity.Name);       
u.Email = email;    
System.Web.Security.Membership.UpdateUser(u);

您似乎没有输入当前用户名来获取用户。

方法Membership.GetUser()returns一个新的用户实例。您的第一行是更改电子邮件 属性,然后丢弃该更改。您的第二行将使用旧用户再次获取用户并更新它。

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)。