2013-04-06 118 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