当用户导航离开页面或退出浏览器时,如何在ASP.net中销毁会话

时间:2014-05-19 16:24:52

标签: c# asp.net session session-variables

我有三个会话,我正在设置从我的主页导航到另一个页面,如下所示:

Session["LocationText"] = locText;
Session["SpecialtyText"] = speText;
Session["GenderText"] = genText;

Response.Redirect("anotherpage.aspx", false);

一旦我进入anotherpage.aspx,我离开页面或关闭浏览器,我想销毁这些变量。整个想法是,如果我回到anotherpage.aspx并且没有通过点击按钮从页面重定向,它将没有任何会话。

我尝试了以下内容:

protected void Page_Unload(object sender, EventArgs e) {
    Session.Remove("LocationText");
    Session.Remove("SpecialtyText");
    Session.Remove("GenderText");
}

当我离开页面然后回到它时,它并没有破坏变量。我怎样才能实现我的目标?

更新

主页:

Context.Items["LocationText"] = locText;
Context.Items["SpecialtyText"] = speText;
Context.Items["GenderText"] = genText;

anotherpage:

if (Context.Items["LocationText"] != null && Context.Items["SpecialtyText"] != null && Context.Items["GenderText"] != null) {
    slcLocation.SelectedValue = Context.Items["LocationText"].ToString();
    slcSpecialty.SelectedValue = Context.Items["SpecialtyText"].ToString();
    slcGender.SelectedValue = Context.Items["GenderText"].ToString();
    this.onBtnClick();
}

2 个答案:

答案 0 :(得分:1)

根据您的问题和评论,听起来Context可能比Session更合适。 Context中的变量仅适用于当前请求的生命周期。

答案 1 :(得分:1)

为什么不在Session.Abandon()事件中使用Page_Unload。您可以再次开始新会话。