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不会丢失。

转载于:https://www.cnblogs.com/tomin/archive/2008/11/08/1329629.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值