基于ASP.net的Session值丢失的原因及解决方法
来源:互联网 发布:日亚什么时候打折 知乎 编辑:程序博客网 时间:2024/05/16 09:53
[摘要]基于ASP.net平台介绍session的相关知识。首先介绍Session的基本概念、作用及工作过程,然后总结几种常见的造成Session值丢失的原因,并给出相应的解决思路。
[关键词]Session丢失解决方法
中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)1120066-01
Session对象的主要用途是保存信息。当一个用户第一次登录网站时,系统会为其分配一个Session,只有当该客户退出时,或者Session生命周期结束时,信息才会被清除。利用Session还可以创建虚拟购物车,当客户在网络商店中选择一种商品时,该商品就会进入到购物车里面,客户的购物信息就会保存在Session中。
一、Session是什么
Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。具体到web中的Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。因此,从上述的定义中我们就可以看到,Session实际上是一个特定的时间概念。一个Session
的概念需要包括特定的客户端、特定的服务器端,以及不中断的操作时间。A用户和C服务器建立连接时所处的Session,同B用户和C服务器中建立连接时所处的Session是两个不同的Session。
二、Session的作用
Session在WEB技术中占有非常重要的作用。由于网页是一种无状态的连接程序,因此你无法得知用户的浏览状态。因此我们必须通过Session记录用户的有关信息,以供用户再次以此身份对web服务器提供要求时作确认。Session的典型应用是存放用户的Login信息,如用户名,密码,权限角色等信息,应用程序(如Email服务、网上银行等系统)根据这些信息进行身份验证和权限验证。
三、Session的工作过程
当用户第一次访问这个网站时,服务器自动会给这个用户分配一个SessionID号,浏览器只要支持Session,就会根据Session的协议,每次访问网站时都发送这个SessionID给服务器,服务器就知道原来这次http请求还是上次那个用户发的,因为http协议是没有状态的协议,而有了SessionID补充,就识别了用户。当用户在WEB应用程序中间跳转时,存储在Session对象中的变量不会清除,而会始终存在。Session变量相当于运行在客户端多个页面间的全局变量,当用户请求来自应用程序的WEB页时,如果该用户还没有会话,则WEB服务器将自动创建一个Session对象。当会话过期或被放弃后,服务器将终止该会话,如果WEB服务器停止工作,Session也将被释放。
四、Session值丢失的可能原因及解决方法
1.有些杀病毒软件会去扫描Web.Config文件,那时Session肯定会丢失。解决方法是:使杀病毒软件屏蔽扫描Web.Config文件。
2.程序内部里有让Session丢失的代码。解决方法是:检查是否有Session.Abandon()之类的代码。
3.程序有框架页面和跨域情况。解决方法是:在Window服务中将ASP.
NET State Service 启动。
4.在默认情况下,Session是保存在进程内的,IIS5是aspnet_wp.exe,
而IIS6是W3wp.exe,该进程不稳定,在某些事件发生时,进程会重起,所以造成了存储在该进程内的Session丢失。引起进程重起可能有以下几种情况:(1)配置文件中processModel标签的memoryLimit属性。(2)Global.asax或者Web.config文件被更改。(3)Bin文件夹中的Web程序(DLL)被修改。(4)杀毒软件扫描了一些.config文件。
5.文件夹选项中,如果没有打开“在单独的进程中打开文件夹窗口”,一旦新建一个窗口,系统可能认为是新的Session会话,而无法访问原来的Session,所以需要打开该选项,否则会导致Session丢失。
6.大部分的Session丢失是客户端引起的,所以要从客户端入手,看看cookie有没有打开,或者IE中的cookie数量限制也可能导致Session的丢失。
五、解决Session丢失的其他方法
1.做Session读写日志,每次读写Session都要记录下来,并且要记录SessionID、Session值、所在页面、当前函数、函数中的第几次Session操作,通过这样的途径查找丢失的原因会方便很多。
2.如果允许的话,建议使用state server或sql server保存Session,
这样不容易丢失。
3.在global.asax中加入代码,记录Session的创建时间和结束时间,超时造成的Session丢失是可以在SessionEnd中记录下来的。
4.如果有些代码中使用客户端脚本,如javascript维护Session状态,就要尝试调试脚本,是否是由于脚本的错误而引起了Session的丢失。
5.在用ASP.net开发程序的时候遇到Session丢失时,可以完成以下三步,便可保存状态。step1:在WEB.CONFIG文件中修改Session状态保存模式,如:。step2:启动系统服务“ASP.NET状态服务”,系统默认是手动启动的。step3:如果Session中保存的数据类型是自定义的,如结构,则先在自定义数据类型处序列化会话状态,即在类或结构申明前加[Serializable]。
六、结束语
Session的作用不言而喻,在实际操作和网站开发建设中,造成Session值丢失的原因很多,这就需要我们不断发现去总结错误产生的原因,找到解决的方法。
参考文献:
[1]邵良杉等,ASP.NET(C#)[M].北京:清华大学出版社,2007:192-193.
- 基于ASP.net的Session值丢失的原因及解决方法
- asp.net中Session丢失的原因
- asp.net session丢失的解决方法
- ASP.NET Session详解及Session莫名丢失的原因及解决办法
- ASP.NET Session详解及Session莫名丢失的原因及解决办法
- ASP.NET Session详解及Session莫名丢失的原因及解决办法
- 对Session的认识及丢失原因和解决方法
- Asp.net 默认配置下,Session莫名丢失的原因及解决办法
- Asp.net 默认配置下,Session莫名丢失的原因及解决办法
- Asp.net 默认配置下,Session莫名丢失的原因及解决办法
- Asp.net 默认配置下,Session莫名丢失的原因及解决办法
- Asp.net 默认配置下,Session莫名丢失的原因及解决办法
- Asp.net 默认配置下,Session莫名丢失的原因及解决办法
- Asp.net 默认配置下,Session莫名丢失的原因及解决办法
- asp.net 默认配置下,Session莫名丢失的原因及解决办法
- Asp.net 默认配置下,Session莫名丢失的原因及解决办法
- Asp.net 默认配置下,Session莫名丢失的原因及解决办法
- Asp.net 默认配置下,Session莫名丢失的原因及解决办法
- boost::asio学习 - HTTP Server性能测试报告
- Delphi7的控件安装与删除
- G.703 V.35接口
- 数据结构的应用——使用栈实现十进制到其他(2、8、16)进制的转换
- Informix数据表结构分析资料整理之字段类型说明和查询SQL语句
- 基于ASP.net的Session值丢失的原因及解决方法
- boost::asio学习 - HTTP Server性能测试报告
- 金山卫士开源系列讲座之一:揭秘卫士如何优化系统
- 01~认识PHP
- WPF Summary:XAML大小写
- c宏和strncpy
- boost::asio学习 - HTTP Server性能测试报告
- boj 1336 简单的问题 不过自己没想到 别人解释的~~学习~~这个是 第二类Stirling数 需要再好好看看
- 十个Google关键词分析工具