Membership.GetUser 方法  
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
从数据源获取成员资格用户的信息。
重载
| GetUser(String, Boolean) | 从数据源获取指定成员资格用户的信息。 更新用户(如果指定)的最近一次活动的日期/时间戳。 | 
| GetUser(Object, Boolean) | 从数据源获取与指定的唯一标识符关联的成员资格用户信息。 更新用户(如果指定)的最近一次活动的日期/时间戳。 | 
| GetUser(String) | 从数据源获取指定成员资格用户的信息。 | 
| GetUser(Boolean) | 从数据源获取当前已登录的成员资格用户的信息。 为当前已登录的成员资格用户(如果被指定)更新最后一次活动的日期/时间戳。 | 
| GetUser() | 从数据源获取信息并为当前已登录的成员资格用户更新最后一次活动日期/时间戳。 | 
| GetUser(Object) | 从数据源获取与指定的唯一标识符关联的成员资格用户信息。 | 
GetUser(String, Boolean)
从数据源获取指定成员资格用户的信息。 更新用户(如果指定)的最近一次活动的日期/时间戳。
public:
 static System::Web::Security::MembershipUser ^ GetUser(System::String ^ username, bool userIsOnline);public static System.Web.Security.MembershipUser GetUser (string username, bool userIsOnline);static member GetUser : string * bool -> System.Web.Security.MembershipUserPublic Shared Function GetUser (username As String, userIsOnline As Boolean) As MembershipUser参数
- username
- String
要检索的用户名。
- userIsOnline
- Boolean
如果为 true,则更新指定用户的最近活动日期/时间戳。
返回
一个 MembershipUser 对象,它表示指定的用户。 如果 username 参数并不对应于现有的用户,则此方法返回 null。
例外
              username 包含一个逗号 (,)。
              username 为 null。
示例
下面的代码示例检索指定用户名的密码,并将其发送到指定用户的电子邮件地址。 对 GetUser 的调用指定不更新用户的上次活动日期/时间戳。
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<%@ Import Namespace="System.Net.Mail" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
public void Page_Load(object sender, EventArgs args)
{
  if (!Membership.EnablePasswordRetrieval)
  {
    FormsAuthentication.RedirectToLoginPage();
  }
  Msg.Text = "";
  if (!IsPostBack)
  {
    Msg.Text = "Please enter a user name.";
  }
  else
  {
    VerifyUsername();
  }
}
public void VerifyUsername()
{
    MembershipUser user = Membership.GetUser(UsernameTextBox.Text, false);
    if (user == null)
    {
      Msg.Text = "The user name " + Server.HtmlEncode(UsernameTextBox.Text) + " was not found. Please check the value and re-enter.";
      QuestionLabel.Text = "";
      QuestionLabel.Enabled = false;
      AnswerTextBox.Enabled = false;
      EmailPasswordButton.Enabled = false;
    }
    else
    {
      QuestionLabel.Text = user.PasswordQuestion;
      QuestionLabel.Enabled = true;
      AnswerTextBox.Enabled = true;
      EmailPasswordButton.Enabled = true;
    }
}
public void EmailPassword_OnClick(object sender, EventArgs args)
{
  // Note: Returning a password in clear text using email is not recommended for
  // sites that require a high level of security.
  try
  {
    string password = Membership.Provider.GetPassword(UsernameTextBox.Text, AnswerTextBox.Text);
    MembershipUser u = Membership.GetUser(UsernameTextBox.Text);
    EmailPassword(u.Email, password);
    Msg.Text = "Your password was sent via email.";
  }
  catch (MembershipPasswordException e)
  {
    Msg.Text = "The password answer is incorrect. Please check the value and try again.";
  }
  catch (System.Configuration.Provider.ProviderException e)
  {
    Msg.Text = "An error occurred retrieving your password. Please check your values " +
               "and try again.";
  }
}
private void EmailPassword(string email, string password)
{
  try
  {
    MailMessage Message = new MailMessage("administrator", email);
    Message.Subject = "Your Password";
    Message.Body = "Your password is: " + Server.HtmlEncode(password);
    SmtpClient SmtpMail = new SmtpClient("SMTPSERVER");
    SmtpMail.Send(Message);
  }
  catch 
  {
    Msg.Text = "An exception occurred while sending your password. Please try again.";
  }
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Retrieve Password</title>
</head>
<body>
<form id="form1" runat="server">
  <h3>Retrieve Password</h3>
  <asp:Label id="Msg" runat="server" ForeColor="maroon" /><br />
  Username: <asp:Textbox id="UsernameTextBox" Columns="30" runat="server" AutoPostBack="true" />
            <asp:RequiredFieldValidator id="UsernameRequiredValidator" runat="server"
                                        ControlToValidate="UsernameTextBox" ForeColor="red"
                                        Display="Static" ErrorMessage="Required" /><br />
  Password Question: <b><asp:Label id="QuestionLabel" runat="server" /></b><br />
  Answer: <asp:TextBox id="AnswerTextBox" Columns="60" runat="server" Enabled="false" />
          <asp:RequiredFieldValidator id="AnswerRequiredValidator" runat="server"
                                      ControlToValidate="AnswerTextBox" ForeColor="red"
                                      Display="Static" ErrorMessage="Required" Enabled="false" /><br />
  <asp:Button id="EmailPasswordButton" Text="Email My Password" 
              OnClick="EmailPassword_OnClick" runat="server" Enabled="false" />
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>
<%@ Import Namespace="System.Net.Mail" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
  Public Sub Page_Load(ByVal sender As Object, ByVal args As EventArgs)
    If Not Membership.EnablePasswordRetrieval Then
      FormsAuthentication.RedirectToLoginPage()
    End If
    Msg.Text = ""
    If Not IsPostBack Then
      Msg.Text = "Please enter a user name."
    Else
      VerifyUsername()
    End If
  End Sub
  Private Sub VerifyUsername()
    Dim user As MembershipUser = Membership.GetUser(UsernameTextBox.Text, False)
    If user Is Nothing Then
      Msg.Text = "The user name " & Server.HtmlEncode(UsernameTextBox.Text) & " was not found. Please check the value and re-enter."
      QuestionLabel.Text = ""
      QuestionLabel.Enabled = False
      AnswerTextBox.Enabled = False
      EmailPasswordButton.Enabled = False
    Else
      QuestionLabel.Text = user.PasswordQuestion
      QuestionLabel.Enabled = True
      AnswerTextBox.Enabled = True
      EmailPasswordButton.Enabled = True
    End If
  End Sub
  Public Sub EmailPassword_OnClick(ByVal sender As Object, ByVal args As EventArgs)
    ' Note: Returning a password in clear text using email is not recommended for
    ' sites that require a high level of security.
    Try
      Dim password As String = Membership.Provider.GetPassword(UsernameTextBox.Text, AnswerTextBox.Text)
      Dim u As MembershipUser = Membership.GetUser(UsernameTextBox.Text)
      EmailPassword(u.Email, password)
      Msg.Text = "Your password was sent via email."
    Catch e As MembershipPasswordException
      Msg.Text = "The password answer is incorrect. Please check the value and try again."
    Catch e As System.Configuration.Provider.ProviderException
      Msg.Text = "An error occurred retrieving your password. Please check your values " & _
                 "and try again."
    End Try
  End Sub
  Private Sub EmailPassword(ByVal email As String, ByVal password As String)
    Try
      Dim Message As MailMessage = New MailMessage("administrator", email)
      Message.Subject = "Your Password"
      Message.Body = "Your password is: " & Server.HtmlEncode(password)
      
      Dim SmtpMail As SmtpClient = New SmtpClient("SMTPSERVER")
      SmtpMail.Send(Message)
    Catch
      Msg.Text = "An exception occurred while sending your password. Please try again."
    End Try
  End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
  <title>Sample: Retrieve Password</title>
</head>
<body>
  <form id="form1" runat="server">
    <h3>
      Retrieve Password</h3>
    <asp:Label ID="Msg" runat="server" ForeColor="maroon" /><br />
    Username:
    <asp:TextBox ID="UsernameTextBox" Columns="30" runat="server" AutoPostBack="True" />
    <asp:RequiredFieldValidator ID="UsernameRequiredValidator" runat="server" ControlToValidate="UsernameTextBox"
      ForeColor="red" Display="Static" ErrorMessage="Required" /><br />
    Password Question: <b>
      <asp:Label ID="QuestionLabel" runat="server" /></b><br />
    Answer:
    <asp:TextBox ID="AnswerTextBox" Columns="60" runat="server" Enabled="False" />
    <asp:RequiredFieldValidator ID="AnswerRequiredValidator" runat="server" ControlToValidate="AnswerTextBox"
      ForeColor="red" Display="Static" ErrorMessage="Required" Enabled="False" /><br />
    <asp:Button ID="EmailPasswordButton" Text="Email My Password" OnClick="EmailPassword_OnClick"
      runat="server" Enabled="False" />
  </form>
</body>
</html>
注解
方法 GetUser 从数据源检索用户信息,并创建使用 MembershipUser 返回的数据填充的对象。
如果使用不采用 参数的 GetUser 重载之一 username , GetUser 则 返回当前登录成员身份用户的信息。 当前登录的成员身份用户由 Name 当前 HttpContext中的用户的 标识。
还可以指定是否要使用 GetUser 参数更新要检索 userIsOnline 的用户的上次活动日期/时间戳。 对于 GetUser 不采用 userIsOnline 参数的重载, Membership.GetUser 隐式更新用户的上次活动日期/时间戳。 
              Membership.GetUser 和 GetUser 不要。
另请参阅
适用于
GetUser(Object, Boolean)
从数据源获取与指定的唯一标识符关联的成员资格用户信息。 更新用户(如果指定)的最近一次活动的日期/时间戳。
public:
 static System::Web::Security::MembershipUser ^ GetUser(System::Object ^ providerUserKey, bool userIsOnline);public static System.Web.Security.MembershipUser GetUser (object providerUserKey, bool userIsOnline);static member GetUser : obj * bool -> System.Web.Security.MembershipUserPublic Shared Function GetUser (providerUserKey As Object, userIsOnline As Boolean) As MembershipUser参数
- providerUserKey
- Object
用户的成员资格数据源中的唯一用户标识符。
- userIsOnline
- Boolean
如果为 true,则更新指定用户的最近活动日期/时间戳。
返回
一个 MembershipUser 对象,它表示与指定的唯一标识符关联的用户。
例外
              providerUserKey 为 null。
注解
方法 GetUser 从数据源检索用户信息,并创建使用 MembershipUser 返回的数据填充的对象。 使用 参数中指定的数据源中的唯一标识符标识用户 providerUserKey 。
另请参阅
适用于
GetUser(String)
从数据源获取指定成员资格用户的信息。
public:
 static System::Web::Security::MembershipUser ^ GetUser(System::String ^ username);public static System.Web.Security.MembershipUser GetUser (string username);static member GetUser : string -> System.Web.Security.MembershipUserPublic Shared Function GetUser (username As String) As MembershipUser参数
- username
- String
要检索的用户名。
返回
一个 MembershipUser 对象,它表示指定的用户。 如果 username 参数并不对应于现有的用户,则此方法返回 null。
例外
              username 包含一个逗号 (,)。
              username 为 null。
示例
下面的代码示例使用 GetUser 方法返回 MembershipUser 当前登录用户的 对象,并更新用户的电子邮件地址。
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
MembershipUser u;
public void Page_Load(object sender, EventArgs args)
{
  u = Membership.GetUser(User.Identity.Name);
  if (!IsPostBack)
  {
    EmailTextBox.Text = u.Email; 
  }
}
public void UpdateEmailButton_OnClick(object sender, EventArgs args)
{
  try
  {
    u.Email = EmailTextBox.Text;
    Membership.UpdateUser(u);
  
    Msg.Text = "User email updated.";
  }
  catch (System.Configuration.Provider.ProviderException e)
  {
    Msg.Text = e.Message;
  }
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Update User E-Mail</title>
</head>
<body>
<form id="form1" runat="server">
  <h3>Update E-Mail Address for <%=User.Identity.Name%></h3>
  <asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
  <table cellpadding="3" border="0">
    <tr>
      <td>Email Address:</td>
      <td><asp:TextBox id="EmailTextBox" MaxLength="128" Columns="30" runat="server" /></td>
      <td><asp:RequiredFieldValidator id="EmailRequiredValidator" runat="server"
                                    ControlToValidate="EmailTextBox" ForeColor="red"
                                    Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td></td>
      <td><asp:Button id="UpdateEmailButton" 
                      Text="Update Email" 
                      OnClick="UpdateEmailButton_OnClick" 
                      runat="server" /></td>
    </tr>
  </table>
</form>
</body>
</html>
<%@ Page Language="vb" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Dim u As MembershipUser
Public Sub Page_Load(sender As Object, args As EventArgs)
  u = Membership.GetUser(User.Identity.Name)
  If Not IsPostBack Then EmailTextBox.Text = u.Email
End Sub
Public Sub UpdateEmailButton_OnClick(sender As Object, args As EventArgs)
  Try
    u.Email = EmailTextBox.Text
    Membership.UpdateUser(u)
  
    Msg.Text = "User email updated."
  Catch e As System.Configuration.Provider.ProviderException
    Msg.Text = e.Message
  End Try
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Update User E-Mail</title>
</head>
<body>
<form id="form1" runat="server">
  <h3>Update E-Mail Address for <%=User.Identity.Name%></h3>
  <asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
  <table cellpadding="3" border="0">
    <tr>
      <td>Email Address:</td>
      <td><asp:TextBox id="EmailTextBox" MaxLength="128" Columns="30" runat="server" /></td>
      <td><asp:RequiredFieldValidator id="EmailRequiredValidator" runat="server"
                                    ControlToValidate="EmailTextBox" ForeColor="red"
                                    Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td></td>
      <td><asp:Button id="UpdateEmailButton" 
                      Text="Update Email" 
                      OnClick="UpdateEmailButton_OnClick" 
                      runat="server" /></td>
    </tr>
  </table>
</form>
</body>
</html>
注解
方法 GetUser 从数据源检索用户信息,并创建使用 MembershipUser 返回的数据填充的对象。 如果使用不采用 参数的 GetUser 重载之一 username , GetUser 则 返回当前登录成员身份用户的信息。 当前登录的成员身份用户由 Name 当前 HttpContext中的用户的 标识。
还可以指定是否要使用 GetUser 参数更新要检索 userIsOnline 的用户的上次活动日期/时间戳。 对于 GetUser 不采用 userIsOnline 参数的重载, Membership.GetUser 隐式更新用户的上次活动日期/时间戳。 
              Membership.GetUser 和 GetUser 不要。
另请参阅
适用于
GetUser(Boolean)
从数据源获取当前已登录的成员资格用户的信息。 为当前已登录的成员资格用户(如果被指定)更新最后一次活动的日期/时间戳。
public:
 static System::Web::Security::MembershipUser ^ GetUser(bool userIsOnline);public static System.Web.Security.MembershipUser GetUser (bool userIsOnline);static member GetUser : bool -> System.Web.Security.MembershipUserPublic Shared Function GetUser (userIsOnline As Boolean) As MembershipUser参数
- userIsOnline
- Boolean
如果为 true,则更新指定用户的最近活动日期/时间戳。
返回
一个 MembershipUser 对象,表示当前已登录的用户。
例外
当前没有成员资格用户登陆。
示例
下面的代码示例在 ASP.NET 页中显示当前登录成员身份用户的用户名,而不更新该用户的上次活动日期/时间戳。
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
MembershipUser currentUser;
public void Page_Load()
{
  currentUser = Membership.GetUser(false);
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Home Page</title>
</head>
<body>
<form id="form1" runat="server">
Welcome <b><%=currentUser.UserName%></b>. 
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Dim currentUser As MembershipUser
Public Sub Page_Load()
  currentUser = Membership.GetUser(False)
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Home Page</title>
</head>
<body>
<form id="form1" runat="server">
Welcome <b><%=currentUser.UserName%></b>.
</form>
</body>
</html>
注解
方法 GetUser 从数据源检索用户信息,并创建使用 MembershipUser 返回的数据填充的对象。 如果使用不采用 参数的 GetUser 重载之一 username , GetUser 则 返回当前登录成员身份用户的信息。 当前登录的成员身份用户由 Name 当前 HttpContext中的用户的 标识。
还可以指定是否要 GetUser 更新使用 userIsOnline 参数检索的用户的最后一个活动日期/时间戳。 对于 GetUser 不采用 userIsOnline 参数的重载, GetUser() 隐式更新用户的上次活动日期/时间戳。 
              GetUser(System.String) 和 GetUser(System.Object) 不要。
另请参阅
适用于
GetUser()
从数据源获取信息并为当前已登录的成员资格用户更新最后一次活动日期/时间戳。
public:
 static System::Web::Security::MembershipUser ^ GetUser();public static System.Web.Security.MembershipUser GetUser ();static member GetUser : unit -> System.Web.Security.MembershipUserPublic Shared Function GetUser () As MembershipUser返回
一个 MembershipUser 对象,表示当前已登录的用户。
例外
当前没有成员资格用户登陆。
示例
下面的代码示例更新当前登录的成员资格用户的上次活动日期/时间戳,并在 ASP.NET 页中显示用户名。
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
MembershipUser currentUser;
public void Page_Load()
{
  currentUser = Membership.GetUser();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Home Page</title>
</head>
<body>
<form id="form1" runat="server">
Welcome <b><%=currentUser.UserName%></b>. 
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Dim currentUser As MembershipUser
Public Sub Page_Load()
  currentUser = Membership.GetUser()
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Home Page</title>
</head>
<body>
<form id="form1" runat="server">
Welcome <b><%=currentUser.UserName%></b>.
</form>
</body>
</html>
注解
              GetUser() 从数据源中检索用户信息,并创建一个 MembershipUser 用返回的数据填充的对象。 如果使用不采用 参数的 GetUser 重载之一 username , GetUser 则 返回当前登录成员身份用户的信息。 当前登录的成员身份用户由 Name 当前 HttpContext中的用户的 标识。
还可以指定是否要 GetUser 更新使用 userIsOnline 参数检索的用户的最后一个活动日期/时间戳。 对于 GetUser 不采用 userIsOnline 参数的重载, GetUser() 隐式更新用户的上次活动日期/时间戳。 
              GetUser(System.String) 和 GetUser(System.Object) 不要。
另请参阅
适用于
GetUser(Object)
从数据源获取与指定的唯一标识符关联的成员资格用户信息。
public:
 static System::Web::Security::MembershipUser ^ GetUser(System::Object ^ providerUserKey);public static System.Web.Security.MembershipUser GetUser (object providerUserKey);static member GetUser : obj -> System.Web.Security.MembershipUserPublic Shared Function GetUser (providerUserKey As Object) As MembershipUser参数
- providerUserKey
- Object
用户的成员资格数据源中的唯一用户标识符。
返回
一个 MembershipUser 对象,它表示与指定的唯一标识符关联的用户。
例外
              providerUserKey 为 null。
注解
方法 GetUser 从数据源检索用户信息,并创建使用 MembershipUser 返回的数据填充的对象。 使用 参数指定的 providerUserKey 数据源中的唯一标识符标识用户。
还可以指定是否要使用 GetUser 参数更新要检索 userIsOnline 的用户的上次活动日期/时间戳。 对于 GetUser 不采用 userIsOnline 参数的重载, GetUser() 隐式更新用户的上次活动日期/时间戳。 
              GetUser(System.String) 和 GetUser(System.Object) 不