0

Azure で実行されている Web サイトがあり、ユーザーはログインして (自然に) 他のページに移動できます。私の問題は、インデックス/ホームページに戻ると、セッションが消えてしまうことです。コードビハインドのログインコントロールとその認証方法に関係があると思いましたが、同じ認証イベントで別のページに別のログインを配置しようとしましたが、それはまったく問題ありません。

同様の問題を抱えている人を見つけたことがありません。

ここに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"] = "";
  }
}
}
4

1 に答える 1

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 の値を確認します。

于 2013-04-06T22:43:12.450 に答える