如何从Session中删除值?

时间:2015-05-07 13:07:55

标签: c# asp.net session

我的会话没有被破坏。这是我在Login.aspx.cs中设置的方式:

Session["User"] = UserName.Text; // Set the session called User.

MasterPage上的链接:

<a href="Login.aspx" id="loginButton"><img src="images/login.png"><span runat="server" id="authspan">Login</span></a> 

链接中的文字会根据用户是否有会话而改变:

    if (Session["User"] != null)
    {
        authspan.InnerHtml = "Logout";
    }
    else
    {
        authspan.InnerHtml = "Login";
    }

此链接重定向到Login.aspx文件,其中在PageLoad上我告诉代码关闭会话。从理论上讲,这应该有效,对吗?

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["User"] != null)
    {
        Response.Redirect("Default.aspx"); // Redirect user.
        Session["User"] = null; 
        Session.Remove("User"); 
    }
    else 
    {
        // run code that logs the user in, and sets up the session.
    }

}

如何正确结束登录用户?

4 个答案:

答案 0 :(得分:6)

您必须先清除会话,然后重定向。

    Session["User"] = null; 
    Session.Remove("User"); 
    Response.Redirect("Default.aspx"); // Redirect user.

另请注意,在客户端删除会话ID也更安全:

    var sessionCookie = new HttpCookie("ASP.NET_SessionId");
    sessionCookie.Expires = DateTime.Now.AddDays(-1);
    Response.Cookies.Add(sessionCookie);

答案 1 :(得分:1)

您应该使用:

Session.Clear();
Response.Redirect("Default.aspx");

答案 2 :(得分:1)

以不同方式从会话中删除值

//Set the session variable
Session["User"]=Value;
//Destroy the session variable
Session.Remove("User");
Session["User"]=null;

// Abandon将完全销毁会话,这意味着您需要先开始一个新会话,然后才能在该会话的会话中存储更多值     Session.Abandon();    //清除会话不会取消设置会话,它仍然存在与用户相同的ID,但只清除了值。     Session.Clear();

答案 3 :(得分:0)

致电Session.Abandon();(我必须写至少30个字符)