调试过程中Session丢失问题的解决
2006-12-08 21:41
316 查看
在近期开发程序的过程了,放弃了微软自带的membership。登录采用了form验证。并为了用户信息的保存方便和数据库压力的减轻,采用的Session存储数据。
可是在调试的过程中发现Session发生了错误,返回的值都是自定义捕捉错误后返回的值。经过研究发现是Session丢失了。于是对Asp.net中的Session机制进行了研究。
对于Session的失效或者丢失,那么具体出现这种情况的问题主要有:
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的时间设置是不是有问题,会不会因为超时造成丢失
那么关于调试过程中Session丢失的问题,最大的可能性就是原因1,经过反复实验,确定丢失的原因是第一个。
这个时候就必须对Session中存储的值是否是我们需要的值进行判断。
以此类推,在以前部署或者跟新网站的过程中也发生过用户输入的信息丢失,最后发现不是丢失,而是将该用户的ID存储成了-1(一般对Session读取出现错误时返回的值),那么可能就是更新的过程中发生的Session丢失。由于问题并没有重复发生,所以并没有在意,现在这样的问题再次出现,该引起重视了。
所以,在对网站或者项目进行更新的过程中,最好采用彻底断线更新,避免此类问题发生。另外对每次Session读取后进行必要的值范围判断也是非常有必要的。
可是在调试的过程中发现Session发生了错误,返回的值都是自定义捕捉错误后返回的值。经过研究发现是Session丢失了。于是对Asp.net中的Session机制进行了研究。
对于Session的失效或者丢失,那么具体出现这种情况的问题主要有:
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的时间设置是不是有问题,会不会因为超时造成丢失
那么关于调试过程中Session丢失的问题,最大的可能性就是原因1,经过反复实验,确定丢失的原因是第一个。
这个时候就必须对Session中存储的值是否是我们需要的值进行判断。
以此类推,在以前部署或者跟新网站的过程中也发生过用户输入的信息丢失,最后发现不是丢失,而是将该用户的ID存储成了-1(一般对Session读取出现错误时返回的值),那么可能就是更新的过程中发生的Session丢失。由于问题并没有重复发生,所以并没有在意,现在这样的问题再次出现,该引起重视了。
所以,在对网站或者项目进行更新的过程中,最好采用彻底断线更新,避免此类问题发生。另外对每次Session读取后进行必要的值范围判断也是非常有必要的。
相关文章推荐
- 使用redis集群+tomcat缓存共享下session丢失问题产生原因以及解决
- 解决webstorm调试js时Evaluate脚本获取dom属性丢失问题
- 解决nginx中proxy_pass到tomcat的session丢失问题:补充
- 解决支持WDK环境配置过程中的插件不支持问题和最近调试的问题
- [ASP.NET][Session] 使用 SQLServer 会话管理解决 Session 丢失问题
- 解决nginx中proxy_pass到tomcat的session丢失问题
- IIS服务器中 ASP.NET State Service 开启后 Session 仍容易丢失的问题终极解决办法
- [转]解决 Iframe跨域session 丢失问题
- nginx反向代理(proxy_pass)tomcat的过程中,session失效的问题解决
- 基于UDP协议的网络摄像头的关键问题解决及调试过程
- 关于c# SESSION丢失问题解决办法[转]
- IIS6中应用程序池和Web园,解决Session丢失问题
- 关于在VS中调试Unity项目的解决过程和遗留问题
- ASP.NET在IE10中无法判断用户已登入及Session丢失问题解决方法
- nginx反向代理(proxy_pass)tomcat的过程中,session失效的问题解决
- php session跨页面传递 session值丢失问题之完美解决
- 解决WEB场中网络负载均衡后产生大Session丢失的问题
- ASP.NET在IE10中无法判断用户已登入及Session丢失问题解决方法
- ASP.NET 状态服务 及 session丢失问题解决方案总结
- C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?