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

时间:2015-01-23 08:01:06

标签: c# asp.net membership

我试图在asp.net中设置当前用户的电子邮件

Membership.GetUser().Email = txtEmail.Text;
Membership.UpdateUser(Membership.GetUser(User.Identity.Name));

但下次我读取当前用户的电子邮件时,它没有改变

我这样读了

Membership.GetUser().Email

2 个答案:

答案 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);

看起来您并没有用当前用户名来获取用户。