我的会话没有被破坏。这是我在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.
}
}
如何正确结束登录用户?
答案 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个字符)