您的位置:首页 > 编程语言 > ASP

ASP.net状态服务器使用

2015-11-11 16:21 375 查看
最近在开发一.NET4.0系统时经常发生session丢失问题,导致用户频繁登陆,给客户造成不良的用户体验。应项目经理号召尽快解决此问题。

一、问题描述。

服务器:windows server 2003

硬 件:刀片机上的虚拟主机

环 境:mvc + oracle

具体描述:在我们公司自己的内部测试虚拟机上运行正常的测试服务器,把代码部署到正式环境中,在实际使用中发现,用户登录后不到20分钟就就掉线。频率很高。

二、解决方案。

解决方案一

刚开始以为是IIS设置的session超时时间太短导致系统自动回收了session,因此调整web.config的超时时间并同时修改IIS应用程序池的高级配置,设置回收的固定时间间隔的时长。设置过后观察一天,发现session丢失现有没有缓解。跟原来一样丢失严重。未能解决问题。开始并不是session设置时长的问题导致的session回收。原因排除。

解决方案二

既然不是因为session设置时长问题导致,那应该是IIS自动重启或内存回收导致的。因此想到单独把session放到单独的内存中去,看看是不是这个原因,由于程序开始并未考session丢失这种情况,因此在代码中都没有在使用session的地方打上[Serializable]标签,因此先在entity实体模型上打上标签。

打开服务,在服务中找到ASP.NET 状态服务,将启动类型设置自动,并右击设置为启动。启动相关的服务。

回到web.config设置<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" timeout="1440"/>,把session的模式设置为StateServer。

发布系统到正式环境观察,观察发现,在使用了ASP.NET状态服务后,登陆的session丢失问题解决,用户的session不在丢失。

三、总结

在开发系统过程中,经验不足,未考虑到测试环境和正式环境的差异,可能由于硬件软件条件不一样导致不同的结果,系统设计不合理,大量使用了session但是使用了IIS自己的内存管理机制,未考虑丢失情况,若刚开始使用第三方缓存来模拟session机制,如:memerbcach等。遇到问题通过不同方案定位原因,采用相应方案解决问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: