asp.net中的成员rest和更改密码

asp.net中的成员rest和更改密码,asp.net,asp.net-membership,password-recovery,change-password,Asp.net,Asp.net Membership,Password Recovery,Change Password,我想手动更改密码并将密码发送给我的用户,但我得到了“对象引用未设置为对象的实例”。错误。我的密码有什么问题: 谢谢各位: Random r = new Random(); string code = r.Next(100000, 9999999).ToString(); /////////////////////////////////////////////////////////////////////////////////////////

我想手动更改密码并将密码发送给我的用户,但我得到了“对象引用未设置为对象的实例”。错误。我的密码有什么问题: 谢谢各位:

        Random r = new Random();
        string code = r.Next(100000, 9999999).ToString();

        //////////////////////////////////////////////////////////////////////////////////////////////

        string connStr = ConfigurationManager.ConnectionStrings["****"].ConnectionString;
        SqlConnection sqlconn = new SqlConnection(connStr);
        SqlCommand sqlcmd = new SqlCommand();
        sqlcmd = new SqlCommand("SELECT Count(ID) FROM RolInfo where username=@username", sqlconn);
        sqlcmd.Parameters.AddWithValue("@username", TextBox1.Text);

        sqlconn.Open();
        int count = ((int)sqlcmd.ExecuteScalar());


        sqlconn.Close();


        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        if (count != 0)
        {

          Sendmail();

            MembershipUser u = Membership.GetUser();
            u.ChangePassword(u.ResetPassword(), code);
        }
        else
        {
            lab_Message.Visible = true;
            lab_Message.Text = "This username is invalid.";
            lab_Message.ForeColor = System.Drawing.Color.Red;

        }

    }
    else
    {
        lab_Message.Visible = true;
        lab_Message.Text = "Please enter your username.";
        lab_Message.ForeColor = System.Drawing.Color.Red;
    }
    }

您没有将参数传递给
Membership.GetUser()

Membership.GetUser()获取当前登录的用户。由于您未登录,它将返回
null
。如果您登录,它将只返回您,而不是您的成员

如果要获取用户,则需要传入他们的
用户名
。像这样:

MembershipUser u = Membership.GetUser(TextBox1.Text);
更新

您不需要调用SQL数据库来检查用户是否存在

你可以这样做

   MembershipUser u = Membership.GetUser(TextBox1.Text);

   if (u != null){
      SendMail();
      u.ChangePassword(u.ResetPassword(), code);
   }else{
      lab_Message.Visible = true;
      lab_Message.Text = "This username is invalid.";
      lab_Message.ForeColor = System.Drawing.Color.Red;
   }
顺便说一下,用户密码不会设置为
code
——这将设置为用户对其安全问题的答案<代码>重置密码
将密码重置为自动生成的密码


有关文档,请参见此处

你能把剩下的代码贴出来吗。。。?。。。您当前的问题中没有GridView或调用任何GridView。@Darren:这里没有GridView!!!我从一个文本框中获得用户名。那么为什么在你的问题“对象引用未设置为对象的实例。到网格视图的idx”@Darren:谢谢你提到这一点。这是我的会员资格。当对象u来自成员资格用户时,它为空。为什么会这样?谢谢你的回答。你说的用户名来自sql是什么意思?如果输入用户名正确,则它存在于sql中。有没有更好的方法来更改密码?编辑了我的答案。您需要传递要更改密码的用户的“用户名”。给我两分钟。我会再做一次编辑。