Session丢失浅析

Session在很多情况下会丢失,主要有如下几种情况:

1.目录删除,以及重命名操作

2.Frame中关于Session丢失

分析Session丢失原因,主要是因为站点目录文件更新导致应用程序重启,并且重新分配内存,所以保存在内存中的session自然会丢失。

实际上在。net中,session主要有一些几种存储方式:

<sessionState mode="InProc"></sessionState>//保存在内存中

<sessionState mode="SQLServer"></sessionState>//保存在数据库中

<sessionState mode="StateServer"></sessionState>//保存在进程中(ASP.NET 状态服务)

很明显,要解决Session丢失的问题,我们可以选择将其保存到数据库或状态服务中。

测试代码:

C# 代码
public partial class _Default : System.Web.UI.Page
...{
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack) ...{
Session[
"A"] = "a";
}

}

protected void Button1_Click(object sender, EventArgs e)
{
try
...{
Label1.Text
= Session["A"].ToString();
}

catch ...{
Label1.Text
= "session已丢失";
Session[
"A"] = "a";
}

}

}

操作:删除目录,更改Global.asax文件,重启IIS等等,发现使用InProc模式Session丢失,而使用StateServer模式Session不会丢失。

posted @ 2008-11-08 15:17  tomin  阅读(277)  评论(0编辑  收藏  举报