首页 > 语言 > 关键词  > ASP.NET最新资讯  > 正文

ASP.NET Session丢失问题原因及解决方案

2011-07-08 12:16 · 稿源:杰之蓝,www.52cfml.com/

正常操作情况下会有ASP.NET Session丢失的情况出现。因为程序是在不停的被操作,排除Session超时的可能。另外,Session超时时间被设定成60分钟,不会这么快就超时的。

现在我就把原因和解决办法写出来。

ASP.NET Session丢失原因:

由于Asp.net程序是默认配置,所以Web.Config文件中关于Session的设定如下:

<sessionState mode='InProc' stateConnectionString='tcpip=127.0.0.1:42424' sqlConnectionString='data source=127.0.0.1;Trusted_Connection=yes' cookieless='true' timeout='60'/>

我们会发现sessionState标签中有个属性mode,它可以有3种取值:InProc、StateServer?SQLServer(大小 写敏感) 。默认情况下是InProc,也就是将Session保存在进程内(IIS5是aspnet_wp.exe,而IIS6是W3wp.exe),这个进程不 稳定,在某些事件发生时,进程会重起,所以造成了存储在该进程内的Session丢失。

哪些情况下该进程会重起呢?微软的一篇文章告诉了我们:

1、配置文件中processModel标签的memoryLimit属性

2、Global.asax或者Web.config文件被更改

3、Bin文件夹中的Web程序(DLL)被修改

4、杀毒软件扫描了一些.config文件。

更多的信息请参考PRB: Session variables are lost intermittently in ASP.NET applications

ASP.NET Session丢失解决办法:

前面说到的sessionState标签中mode属性可以有三个取值,除了InProc之外,还可以为StateServer、SQLServer。这两种存Session的方法都是进程外的,所以当aspnet_wp.exe重起的时候,不会影响到Session。

现在请将mode设定为StateServer。StateServer是本机的一个服务,可以在系统服务里看到服务名为ASP.NET State Service的服务,默认情况是不启动的。当我们设定mode为StateServer之后,请手工将该服务启动。

这样,我们就能利用本机的StateService来存储Session了,除非电脑重启或者StateService崩掉,否则Session是不会丢的(因Session超时被丢弃是正常的)。

除此之外,我们还可以将Session通过其他电脑的StateService来保存。具体的修改是这样的。同样还在sessionState标签 中,有个stateConnectionString='tcpip=127.0.0.1:42424'属性,其中有个ip地址,默认为本机 (127.0.0.1),你可以将其改成你所知的运行了StateService服务的电脑IP,这样就可以实现位于不同电脑上的Asp.net程序互通 Session了。

如果你有更高的要求,需要在服务期重启时Session也不丢失,可以考虑将mode设定成SQLServer,同样需要修改sqlConnectionString属性。关于使用SQLServer保存Session的操作,请访问这里。

在使用StateServer或者SQLServer存储Session时,所有需要保存到Session的对象除了基本数据类型(默认的数据类型,如int、string等)外,都必须序列化。只需将[Serializable]标签放到要序列化的类前就可以了。

如:

[Serializable]

public class MyClass

{

......

}

具体的序列化相关的知识请参这里。

至此,ASP.NET Session丢失问题解决。

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

asp中Session的工作原理:

asp的Session是具有进程依赖性的。ASP Session状态存于IIS的进程中,也就是inetinfo.exe这个程序。所以当inetinfo.exe进程崩溃时,这些信息也就丢失。另外,重起或者关闭IIS服务都会造成信息的丢失。

asp.net Session的实现

ASP.NET的Session是基于HttpModule技术做的,HttpModule可以在请求被处理之前,对请求进行状态控制,由于Session本身就是用来做状态维护的,因此用HttpModule做Session是再合适不过了。

原因1:

bin目录中的文件被改写,asp.net有一种机制,为了保证dll重新编译之后,系统正常运行,它会重新启动一次网站进程,这时就会导致Session丢失,所以如果有access数据库位于bin目录,或者有其他文件被系统改写,就会导致Session丢失

原因2:

文件夹选项中,如果没有打开“在单独的进程中打开文件夹窗口”,一旦新建一个窗口,系统可能认为是新的Session会话,而无法访问原来的Session,所以需要打开该选项,否则会导致Session丢失

原因3:

似乎大部分的Session丢失是客户端引起的,所以要从客户端下手,看看cookie有没有打开

原因4:

Session的时间设置是不是有问题,会不会因为超时造成丢失

原因5:

IE中的cookie数量限制(每个域20个cookie)可能导致session丢失

原因6:

使用web garden模式,且使用了InProc mode作为保存session的方式

ASP.NET Session丢失问题解决经验

1. 判断是不是原因1造成的,可以在每次刷新页面的时候,跟踪bin中某个文件的修改时间

2. 做Session读写日志,每次读写Session都要记录下来,并且要记录SessionID、Session值、所在页面、当前函数、函数中的第几次Session操作,这样找丢失的原因会方便很多

3. 如果允许的话,建议使用state server或sql server保存session,这样不容易丢失

4. 在global.asa中加入代码记录Session的创建时间和结束时间,超时造成的Session丢失是可以在SessionEnd中记录下来的。

5. 如果有些代码中使用客户端脚本,如javascript维护Session状态,就要尝试调试脚本,是不是因为脚本错误引起Session丢失。(来源:杰之蓝

  • 相关推荐
  • 大家在看
  • 历史建筑测绘解决方案

    历史建筑测绘的工作流程分为前期准备、数据采集、数据处理、成果表达与管理、成果检核与验收、成果提交存档等五个阶段。历史建筑测绘工作流程实施方案飞燕遥感根据历史建筑测绘的特点和目的,结合历史建筑测绘项目经验,采用空地一体化历史建筑测绘解决方案——综合运用三维激光扫描、倾斜航摄、全景摄影、数码相机拍摄等技术手段进行全面测绘。地面方面,以三维激光扫描技术为主要测量手段,对建筑单体进行精细化扫描,精确记录建

  • 环信发布视频云柜面寿险行业解决方案

    引言:全球新冠疫情深刻改变了人与人之间的沟通方式,无接触经济成为后疫情时代的重要的发展趋势。无接触经济叠加中国企业数字化的进程,将促使以“环信视频云柜面寿险行业解决方案”为代表的商用远程视频客服的井喷式爆发。 2021 年 9 月,作为国内最负盛名的中国保险科技界的年度大会, 2021 中国寿险科技应用高峰论坛、中国财险科技应用高峰论坛在京召开,环信作为国内SaaS客服头部企业以及中科软战略合作伙伴,已经连续 5 年受

  • 长轻瘦身:健康管理需要个性化解决方案

    近日,在央视网的一档节目上,专家提到了一个话题#低质量碳水比脂肪伤害大#。说到不健康饮食,很多人会想到炸鸡、汉堡。其实,对人体伤害更大的是低质量碳水食物,医生表示,长期大量食用低质量碳水食物,心脑血管疾病、代谢性疾病甚至肿瘤的发生风险都会升高。米饭、馒头、大米粥、面包等“升糖高手”,爱吃也要适量。其实大家可以从央视网的报道中看到,合理的健康饮食对人们的健康管理有着至关重要的作用,只有拥有健康且合理的

  • 首批通过| e签宝上线 SAP Store,向全球企业提供更加丰富的联合解决方案

    近日,e签宝成功上线 SAP Store,将为企业客户提供更丰富、更稳定、更安全的电子签名解决方案。上线短短的一段时间,后台收到多封关于了解、沟通、咨询相关业务的邮件,e签宝以专业的团队、成熟的客户成功服务,为SAP企业用户赋能。同时这一上架的方案也是国内首批经过SAP ICC(Integration and Certification) 部门认证和与SuccessFactors集成的电子签解决方案。SAP Store是服务于全球超过 44 万家客户的SAP官方应用商城。首先介绍

  • 普元信息金融信创解决方案,护航多家机构信创OA落地

    金融行业是率先启动行业信创实践的先锋领域,也是普元信息的显著优势垂直行业。结合近 20 年的丰厚服务积累,普元信息金融信创解决方案基于成熟的信创软硬件环境适配技术和经验,服务客户信创OA的选型适配、方案实施到全面落地,并以应用开发平台、微服务平台、低代码开发平台等全面构建统一信创开发环境,支撑信创应用迁移或重构,在多项实践中护航金融信创落地,让金融办公更高效、安全。深入信创OA场景,服务选型适配、方案实施

  • 安超云基座一站式解决方案中篇——“隐蔽技术工程”

    安超云基座是面向企业数据化转型的一站式解决方案。融合了全芯全栈的通用型云操作系统、全芯全生态的高性能桌面云以及混合IT架构的云管理平台,通过自主研发的多项核心技术,为客户提供可信赖的数字化转型解决方案。安超云基座解决方案核心模块和技术介绍如下:一、全局网络服务随着IT架构快速向云迁移,企业需要面对来自云数据中心网络的多项挑战:现有的网络基础架构需要保护投资,如何无缝地迁移到云时代。可选的云网络基础架构

  • 视频会议解决方案推荐!多大的会议室皓丽都能搞定

    怎么样的视频会议方案才算是一套完美的会议解决方案呢?皓丽以智能会议平板为核心的全场景视频会议解决方案,既有优质的声音传输能力、清晰的图像处理能力,还有便捷的协作能力;既能定制化,还有针对性,优质的视频会议解决方案非他莫属。

  • 惟客数据推出智慧康养解决方案助力康养机构破解养老难题

    近年来,我国社会老龄化步伐明显加快,“老有所养”问题已成为亟待解决的社会热点问题之一。根据第七次全国人口普查数据,全国总人口为14.1亿人,其中60岁以上人口2.64亿,占18.7%。老年人口需求格局发生明显变化,中国当前正处于布局养老产业的黄金时代,满足老年人健康养老服务需求,已经成为人们的共同愿景。在此背景下,各大民政机构、房地产企业、保险企业等纷纷发力,进军康养产业,在做实原有项目的基础上,开始向大健康领?

  • 全民健身激发大众运动热情,FITURE魔镜为居家锻炼提供专业服务解决方案

    2021 年是“十四五”的开局之年,也是全民健身计划进入新阶段的起点。自 8 月份起,伴随《全民健身计划(2021— 2025 年)》的正式发布以及奥运会、全运会等大赛的带动,大众参与体育锻炼的热情空前高涨。除了传统的健身房训练,户外运动,慢跑,广场舞等之外,原本因疫情因素兴起的居家健身也逐渐成为了一股新风尚。伴随消费需求的井喷,健身镜、划船机、椭圆机等相关产品的销量持续增长。 打破“场馆思维”局限,智能健身应势兴起

  • AMD工程总监:FSR采用率喜人 机器学习不是唯一的最佳解决方案

    尽管推出不到四个月,AMD 对标英伟达深度学习超级采样(DLSS)的 FidelityFX Super Resolution(简称 FSR)技术,已经在 20 多款游戏中得到了支持。在周六接受 Eurogamer 的 Digital Foundry 采访时,AMD 工程总监 Nick Thibieroz 表示:“开发者对于 FSR 技术的接纳度和采用率,现已无需赘述”。Nick Thibieroz 声称,FSR 1.0 是 AMD 广泛研究后得出的一项成果,背后是多个团队借助的各种不同的底层改进技术。公司深知 FSR 1.0 会

这篇文章对你有价值吗?

  • 热门标签

热文

  • 3 天
  • 7天