0

我目前有一个站点,它从数据库存储用户登录时的变量。一个这样的变量(在成功登录时)是SiteSession.Current.IsLoggedIn = true.

当我单击注销按钮时,我的方法告诉它将其设置为false,然后继续执行Session.Clear()and Session.Abandon()

到目前为止,我必须在进行任何更改之前单击两次注销按钮。
我用Response.Write(SiteSession.Current.IsLoggedIn);我的Logout()方法测试过。

第一次单击不显示任何内容,然后第二次单击显示false

谁能告诉我哪里出错了?

/// <summary>
/// Logs the user out, and destroys the session
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lnkAccountLogout_Click(object sender, EventArgs e)
{
    SiteSession.Current.IsLoggedIn = false;
    SiteSession.Current.RollId = "-1";

    Session.Clear();
    Session.Abandon();
    Response.Write(SiteSession.Current.IsLoggedIn);
}

〜登录基本上与此相反,同时存储了更多变量。

编辑:如果我在第一次单击后重新加载页面,则不会发生任何事情。

4

2 回答 2

0

将更改存储在数据库中可能需要一些时间。尝试让它在另一个线程中运行并让线程等待,直到 IsLoggedIn 为真。

我希望这会有所帮助=)

于 2013-04-25T13:26:38.370 回答
0

我得到全面清理的方法session是让我的班级Session

 private Boolean _isNew = true;
 public Boolean isNew
    {
        get { return _isNew; }
        set { _isNew = value; }

    }

在页面加载时检查是否isNew是我

会话.清除();

会话.Abandon();

当我完成后,Session我只是做了一个新的实例Session

//清除会话

SessionVars.Current.Incident = new Incident();

于 2013-04-25T13:35:38.500 回答