Session 失效的原因汇总及解决丢失办法

 更新时间:2015年09月30日 10:50:08   作者:php程序猿的笔记  
这篇文章主要介绍了Session 失效的原因汇总的相关资料,需要的朋友可以参考下

昨天去GTSC面试,有面试官问我关于Session丢失之后怎么查的问题,说老实话,开发到现在很少碰到这样的情况,唯一想到的就是Session超时,还有就是做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丢失

参考配置:

http://jingyan.baidu.com/article/22fe7ced78594f3002617f04.html

原因3:

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

原因4:

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

原因5:

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

原因6:

使用web garden模式,且使用了InProc mode作为保存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丢失

以上内容是脚本之家小编给大家分享的session失效的几种原因,希望对大家有所帮助。

相关文章

  • php 可变函数使用小结

    php 可变函数使用小结

    PHP 支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。本文重点给大家介绍php 可变函数使用小结,感兴趣的朋友一起看看吧
    2018-06-06
  • PHP微信开发之查询微信精选文章

    PHP微信开发之查询微信精选文章

    这篇文章主要为大家详细介绍了PHP微信开发之简单实现查询微信精选文章的相关资料,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • PHP验证码生成原理和实现

    PHP验证码生成原理和实现

    验证码在表单实现越来越多了,但是用js的写的验证码,总觉得不方便,所以学习了下php实现的验证码的原理和实现,对验证码生成原理相关知识感兴趣的朋友一起学习吧
    2016-01-01
  • PHP异常处理浅析

    PHP异常处理浅析

    这篇文章主要介绍了PHP异常处理浅析,本文着重讲解如何捕获异常,并给出代码操作实例,需要的朋友可以参考下
    2015-05-05
  • php 判断IP为有效IP地址的方法

    php 判断IP为有效IP地址的方法

    这篇文章主要介绍了php 判断IP为有效IP地址的方法,需要的朋友可以参考下
    2018-01-01
  • Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析

    Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析

    这篇文章主要介绍了Thinkphp 框架配置操作之动态配置、扩展配置及批量配置,结合实例形式分析了Thinkphp配置操作中动态配置、扩展配置及批量配置基本原理、实现方法与相关注意事项,需要的朋友可以参考下
    2020-05-05
  • 2个Codeigniter文件批量上传控制器写法例子

    2个Codeigniter文件批量上传控制器写法例子

    这篇文章主要介绍了2个Codeigniter文件批量上传控制器写法例子,需要的朋友可以参考下
    2014-07-07
  • laravel中短信发送验证码的实现方法

    laravel中短信发送验证码的实现方法

    在做用户注册和个人中心的安全管理时常常需要用到短信发送验证码,下面这篇文章主要给大家介绍了关于laravel中短信发送验证码的实现方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2018-04-04
  • Laravel框架验证码类用法实例分析

    Laravel框架验证码类用法实例分析

    这篇文章主要介绍了Laravel框架验证码类用法,结合实例形式分析了Laravel框架验证码类的使用操作技巧与相关注意事项,需要的朋友可以参考下
    2019-09-09
  • CI框架的安全性分析

    CI框架的安全性分析

    这篇文章主要介绍了CI框架的安全性,结合实例形式分析了CI框架字符过滤的相关技巧,需要的朋友可以参考下
    2016-05-05

最新评论