2013-04-06 91 views
0

我有一個運行在Azure上的用戶可以登錄的網站,然後導航到其他頁面(自然)。我的問題是,當我回到索引/主頁時,會話就會消失。我認爲這與我在代碼背後的登錄控制及其身份驗證方法有關,但我嘗試在另一個頁面上使用相同的身份驗證事件再次登錄,但這完全沒問題。會話在返回主頁時消失

我還沒有找到任何有類似問題的人。

這裏是背後的Index.aspx

string Connection = ConfigurationManager.ConnectionStrings["****"].ConnectionString; 
protected void Page_Load(object sender, EventArgs e) {} 
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) { 
    string Username = Login1.UserName; 
    string pwd = Login1.Password; 
    SqlConnection connection = new SqlConnection(Connection); 
    connection.Open(); 
    //SqlCommand comm = new SqlCommand("SELECT COUNT([*****], [*****]) FROM ***** WHERE [****] = '***' AND [****] = '****'", connection); 
    string sqlUserName = "SELECT [****] ,[****] FROM ***** WHERE [*****] ='" + * * * * * +"' AND [*****] ='" + * * * +"'"; 
    SqlCommand cmd = new SqlCommand(sqlUserName, connection); 
    string CurrentName; 
    CurrentName = (string) cmd.ExecuteScalar(); 
    if(CurrentName != null) { 
    Login1.FailureText = "Welcome"; 
    Session["User"] = Username; 
    Session["LoggedIn"] = true; 
    Label1.Text = Session["User"].ToString(); 
    if((bool) Session["LoggedIn"] == true && Session["User"].ToString() == "admin1") { 
     HyperLink3.Visible = true; 
    } else if((bool) Session["LoggedIn"] == true) { 
     HyperLink1.Visible = true; 
    } 
    } else { 
    Session["User"] = ""; 
    } 
} 
} 

回答

0

if語句必須在某處被竊聽了代碼,或CurrentName爲null。

if (CurrentName != null) 
     { 
      Login1.FailureText = "Welcome"; 
      Session["User"] = Username; 
      Session["LoggedIn"] = true ; 
      Label1.Text = Session["User"].ToString(); 
      if ((bool)Session["LoggedIn"] == true && Session["User"].ToString() == "admin1") 
      { 
       HyperLink3.Visible = true; 
      } 
      else if ((bool)Session["LoggedIn"] == true) 
      { 
       HyperLink1.Visible = true; 
      } 
     } 

     else 
     { 
      Session["User"] = ""; 

     } 

最有可能的罪魁禍首是前面的SQL查詢。用SQL查詢仔細檢查你的語法。我不確定你在那裏加入了星號變量,但它們可能會導致問題。您應該繼續對該腳本進行逐行調試。在中途抓住並檢查CurrentName的值。

+0

代碼設置會話'用戶'變量,因爲我在其他頁面上的SQL查詢中使用它,但也導航回頁面時,我知道它不是隨機再次運行login1_validate事件,除非我嘗試登錄爲四檢查它。 我把完全相同的代碼和登錄控制在另一頁上沒有問題。 我只是無法解決爲什麼網頁這樣做。感謝你能這麼快回復 – user2241161 2013-04-06 23:05:15