0

암호를 수동으로 변경하고 내 사용자에게 암호를 보내려하지만 "개체 참조가 개체의 인스턴스로 설정되지 않았습니다." 오류. 당신을 감사 : 무엇을 내 cods에 문제가 있습니다 당신은 사용자의 현재 로그온 한 Membership.GetUser();asp.net의 구성원 휴식 및 암호 암호

Membership.GetUser();에 인수를 가져옵니다 통과하지 않을

 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 [email protected]", 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; 
    } 
    } 
+0

나머지 코드를 게시 할 수 있습니까? ... ... 현재 질문에는 GridView가 없거나 GridView가 호출됩니다. – Darren

+0

@ Darren : 여기에 gridview가 없습니다 !!! 나는 텍스트 상자에서 사용자 이름을 얻었다. –

+0

그럼 왜 "개체 참조가 개체의 인스턴스로 설정되지 않았습니다 - 그리드보기의 idx로 설정되지 않습니다"<- 표보기? - 오류가 정확히 어떤 줄에 문제가 있다고 말합니까? – Darren

답변

0

. 로그인하지 않았으므로 null을 반환합니다. 로그인 한 경우 회원이 아닌 본인 만 반환됩니다.

사용자를 얻으려면 username을 전달해야합니다. 이처럼 :

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

UPDATE

당신은 사용자가 존재하는지 확인하기 위해 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로 설정되지 않습니다 - 사용자가 자신의 보안 질문에 대한 답변이 설정 얻을 것이다. ResetPassword은 암호를 자동으로 생성 된 암호로 재설정합니다.

설명서를 보려면 여기를 클릭하십시오. http://msdn.microsoft.com/en-us/library/system.web.security.membershipuser.resetpassword.aspx

+0

답변 해 주셔서 감사합니다. sql의 username을 말하면 무엇을 의미합니까? 입력 된 사용자 이름이 올바른 경우 SQL에 존재합니다. 암호를 변경하는 더 좋은 방법이 있습니까? –

+0

내 대답을 편집했습니다. 변경할 암호의 "사용자 이름"을 전달해야합니다. 2 분만 줘. 다른 편집을하겠습니다. – Darren

+0

ok .. 정말 많이 .. 감사합니다. –