• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

关于asp.net Session丢失问题的总结

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
Session state模式的健壮性
InProc
:如果工作者进程(aspnet_wp.exe)进行资源回收或者应用程序域(appdomain)重启动,session state就会丢失。这是因为session state是保存在一个应用程序域的内存空间中的。对配置文件(如web.config和machine.config)的修改或者\bin目录的任何改变(例如在你使用VS编译应用程序后产生了一个新的dll)都可能引起重启动,详细请见KB324772。在1.0中,也有一个bug可能引起工作者进程重启动,但这个bug在1.1中已经修复,见KB321792。
如果你使用的是IIS6.0,你可以在IIS Manager中找到Application Pools/DefaultAppPool,其中可以看到回收(Recycling)选项卡与性能(Performace)选项卡中是否有引起IIS工作者进程(w3svc.exe)停止工作的参数。
StateServer:解决了InProc模式的session state丢失问题。允许一个webfarm在中央服务器中存储session。只能在State Server上出现失败。
SQLServer:与StateServer相似。session state的数据在SQL Server重启后仍然保留着,你也可以按照KB311209的步骤使用SQL server failover cluster

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



参考:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q324772
http://www.zaqi.net/files_view.asp?files_id=794
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q316148

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ASP.NET MVC Core的ViewComponent发布时间:2022-07-10
下一篇:
ASP.NET Core真实管道详解[1]:中间件是个什么东西?发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap