asp.net Session丢失问题

本文详细分析了ASP.NET系统中Session丢失的常见原因,并提供了针对性的解决方案,包括检查bin目录文件、确保文件夹选项正确设置、检查客户端Cookie状态、调整Session超时设置、避免使用特定的保存方式等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

      最近修改一个系统,在系统上做了一个写文件的功能,但是后来发现这个功能存在一个问题:每次文件写成功后用户都需要重新登录系统。开始没在意,后来用户反映了多次,我准备对系统做下分析,查下原因,网上查了下可能造成Session丢失的原因,总结如下:

 

Session 丢失的原因:
 原因1:
 bin目录中的文件被改写,asp.net有一种机制,为了保证dll重新编译之后,系统正常运行,它会重新启动一次网站进程,这时就会导致Session丢失,所以如果有access数据库位于bin目录,或者有其他文件被系统改写,就会导致Session丢失。
 详见:http://support.microsoft.com/kb/324772
 
原因2:
 文件夹选项中,如果没有打开“在单独的进程中打开文件夹窗口”,一旦新建一个窗口,系统可能认为是新的Session会话,而无法访问原来的Session,所以需要打开该选项,否则会导致Session丢失
 
原因3:
 似乎大部分的Session丢失是客户端引起的,所以要从客户端下手,看看cookie有没有打开
 
原因4:
 Session的时间设置是不是有问题,会不会因为超时造成丢失
 
原因5:
 IE中的cookie数量限制(每个域20个cookie)可能导致session丢失
 
原因6:
 Global.asax或者Web.config文件被更改.
 防病毒软件可能会修改以上文件.配置防病毒软件不要扫描.asax , .config文件。配置
 Web应用程序以out-of-process模式存储Session.
 详见:http://support.microsoft.com/default.aspx?scid=kb;en-us;Q316148
 
原因7:
 使用web garden模式,且使用了InProc mode作为保存session的方式。
 详见:http://support.microsoft.com/kb/822171
 
原因8:
 在 ASP.NET 中,在高负载情况下访问会话状态时,模拟可能会丢失。
Microsoft 现在提供了受支持的修复程序.
 详见:http://support.microsoft.com/kb/324479/zh-cn
 
原因9:
 配置文件中processModel标签的memoryLimit属性。
 详见:http://support.microsoft.com/kb/324772
 
原因10:
 由于设置iis6的 应用程序池内的性能内的最大web进程数导致的,由于session默认是存放在web进程里的,进程开多了,导致session不能共享,每次刷新又由不同的进程来处理。
 
原因11:
 在IE6中使用FrameSet.
 详见:http://support.microsoft.com/kb/323752
 

      没想到第一个原因就让我给撞上了,排查的时候发现,原来我在写文件的时候,也在bin目录中写了日志文件,所以建议web系统的日志不要写在bin目录中,否则会引起Session丢失的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值