如何从Session中删除值?

hf1*_*185 3 c# asp.net session

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

Session["User"] = UserName.Text; // Set the session called User.
Run Code Online (Sandbox Code Playgroud)

MasterPage上的链接:

<a href="Login.aspx" id="loginButton"><img src="images/login.png"><span runat="server" id="authspan">Login</span></a> 
Run Code Online (Sandbox Code Playgroud)

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

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

此链接重定向到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.
    }

}
Run Code Online (Sandbox Code Playgroud)

如何正确结束登录用户?

Van*_*dze 6

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

    Session["User"] = null; 
    Session.Remove("User"); 
    Response.Redirect("Default.aspx"); // Redirect user.
Run Code Online (Sandbox Code Playgroud)

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

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