2016-09-24 3 views
1

Ich habe zwei Seiten genannt Login.aspx und Home.aspxAnmeldung Fehlermeldung Objektreferenz

AKTUALISIERT Code:

protected void Button1_Click(object sender, EventArgs e) 
    { 

      if (loginmethod(txt_us.Text, txt_pwd.Text) != "NA") 
      { 
       FormsAuthentication.Initialize(); 
       String strRole = Assignroles(txt_us.Text); 
       FormsAuthenticationTicket fat = new FormsAuthenticationTicket(1, txt_us.Text, DateTime.Now, DateTime.Now.AddMinutes(30), false, strRole, FormsAuthentication.FormsCookiePath); 
       Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, 
       FormsAuthentication.Encrypt(fat))); 
       loginmethod(txt_us.Text, txt_pwd.Text); 
       Response.Redirect("home.aspx"); 
      } 
      else if (Session["ID"] != null) 
      { 

        u = Session["ID"].ToString(); 
      } 

      else 
      { 
       Label1.Text = ("Incorrect UserName/Password"); 

       Label1.Visible = true; 
       Response.Redirect("home.aspx"); 
      } 
      txt_us.Text = ""; 
      txt_pwd.Text = ""; 
    } 

    private string loginmethod(string UserName, string Password) 
    { 
     try 
     { 
      login_class lg_class = new login_class(); 
      Entities login = new Entities(); 
      string logn = Convert.ToString(lg_class.loginfunction(UserName, Password).Rows[0]["id"]); 
      Session["ID"] = logn.ToString(); 
      return (logn); 
     } 
     catch (Exception ex) 
     {    
      return (ex.Message.ToString());    
     } 
    } 

    private string Assignroles(string username) 
    { 
     if ((txt_us.Text != string.Empty) && (txt_pwd.Text != string.Empty)) 
      return ""; 
     else 
      return string.Empty; 
    } 

    public DataTable loginfunction(string username, string password) 
    { 
     try 
     { 
      Entities lg = new Entities(); 
      List<SP_GetLogin_Result> gr = lg.SP_GetLogin(username, password).ToList(); 
      DataTable dt = new DataTable(); 
      dt.Columns.Add("id", typeof(string)); 
      foreach (var l in gr) 
      { 
       dt.Rows.Add(l.id); 
      } 
      return dt; 
     } 
     catch (Exception) 
     { 
      throw new Exception(); 
     } 
    } 

Und auf home.aspx Seite zu laden:

string id; 

    protected void Page_Load(object sender, EventArgs e) 
    {   
     if(!IsPostBack) 
     { 
      id = Session["ID"].ToString(); 
      this.FFID = "All"; 
      vehcileinfo(id);      
     }  
    } 

SP_GetLogin Rückkehr ID dh wenn i eingeben Benutzername abc und pssword 1224 dann diese Rückkehr ID CU-2343

, wenn ich mit korrekten Benutzernamen und Passwort eingeben dann umleiten, dies zu home.aspx

Aber wenn ich falsch Benutzername oder Passwort eingeben, dann zeigen diese einen Fehler auf dieser Linie

u = Session["ID"].ToString(); 

System.NullReferenceException : Objektreferenz wurde nicht auf eine Instanz eines Objekts gesetzt.

und ich möchte auf login.aspx „falschen Benutzernamen und Passwort“ Fehlermeldung zeigen

Wie ich das tun?

+0

* Objektverweis nicht auf eine Instanz eines Objekts festgelegt. * Es ist zeigt, dass Ihre 'Session [ "ID"]' 'ist NULL' –

+0

Behandle es: 'if (Session [" ID "]! = Null) {u = Session [" ID "]. ToString(); } ' –

+0

ON home.aspx Seite ?? @Div und ja, ich gebe falsch Benutzername und Passwort, weshalb dieser Fehler angezeigt wird, wo, wie ich Nachricht auf Login ASPX, dass inkorrekt Benutzername/Passwort anzeigen möchte .. –

Antwort

1

Gemäß Diskussion in einem Kommentar, eine Ausnahme von NullReferenceException

bekommen Was bedeutet, versuchen Sie, etwas zu verwenden, das null ist. Dies bedeutet, dass Sie entweder auf null setzen oder gar nichts einstellen.

So überprüfen Sie nur auf Page_Load von Home.aspx

if(Session["ID"] != null) 
{ 
    id = Session["ID"].ToString(); 
} 

else 
{ 
    // Do logic here 
} 
+0

Dies ist auf login.aspx Seite laden oder zu Hause.aspx laden? –

+0

On 'home.aspx 'Seite laden –

+0

ich mache dies auf home.aspx Seite laden, aber diese Show, wenn ich falsche Anmeldeinformationen dann diese Umleitung zu home.aspx Seite wo ich als Nachricht anzeigen und wenn ich dies auf Schaltfläche klicken klicken login.aspx dann dieser selbe Fehler, den ich auf Frage –

Verwandte Themen