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 @   tomin  阅读(278)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示