如何在 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)。
我正在尝试从 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)。