internet explorer 9-两台电脑如何建立局域网

aspsession
2023年4月3日发(作者:微软xp系统停止使用)

基于的Session值丢失的原因及解决方法丢

失生辰纲的原因

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给服务器,服务器就知道原来这次

https请求还是上次那个用户发的,因为https协议是没有状态的协议,

而有了SessionID补充,就识别了用户。当用户在WEB应用程序中间

跳转时,存储在Session对象中的变量不会清除,而会始终存在。Session

变量相当于运行在客户端多个页面间的全局变量,当用户请求来自应

用程序的WEB页时,如果该用户还没有会话,则WEB服务器将自动创

建一个Session对象。当会话过期或被放弃后,服务器将终止该会话,

如果WEB服务器停止工作,Session也将被释放。

四、Session值丢失的可能原因及解决方法

1.有些杀病毒软件会去扫描文件,那时Session肯定

会丢失。解决方法是:使杀病毒软件屏蔽扫描文件。

2.程序内部里有让Session丢失的代码。解决方法是:检查是否有

n()之类的代码。

3.程序有框架页面和跨域情况。解决方法是:在Window服务中将

ASP.

NETStateService启动。

4.在默认情况下,Session是保存在进程内的,IIS5是aspnet_,

而IIS6是,该进程不稳定,在某些事件发生时,进程会重

起,所以造成了存储在该进程内的Session丢失。引起进程重起可能有

以下几种情况:(1)配置文件中processModel标签的memoryLimit属

性。(2)或者文件被更改。(3)Bin文件夹中的

Web程序(DLL)被修改。(4)杀毒软件扫描了一些.config文件。

5.文件夹选项中,如果没有打开“在单独的进程中打开文件夹窗

口”,一旦新建一个窗口,系统可能认为是新的Session会话,而无法访问

原来的Session,所以需要打开该选项,否则会导致Session丢失。

6.大部分的Session丢失是客户端引起的,所以要从客户端入手,看

看cookie有没有打开,或者IE中的cookie数量限制也可能导致Session

的丢失。

五、解决Session丢失的其他方法

1.做Session读写日志,每次读写Session都要记录下来,并且要记

录SessionID、Session值、所在页面、当前函数、函数中的第几次

Session操作,通过这样的途径查找丢失的原因会方便很多。

2.如果允许的话,建议使用stateserver或sqlserver保存Session,

这样不容易丢失。

3.在中加入代码,记录Session的创建时间和结束时间,

超时造成的Session丢失是可以在SessionEnd中记录下来的。

4.如果有些代码中使用客户端脚本,如javascript维护Session状

态,就要尝试调试脚本,是否是由于脚本的错误而引起了Session的丢

失。

5.省略开发程序的时候遇到Session丢失时,可以完成以下三步,便

可保存状态。step1:在文件中修改Session状态保存模

式,如:。step2:启动系统服务“状态服务”,系统默认是手动启动

的。step3:如果Session中保存的数据类型是自定义的,如结构,则先在

自定义数据类型处序列化会话状态,即在类或结构申明前加

[Serializable]。

六、结束语

Session的作用不言而喻,在实际操作和网站开发建设中,造成

Session值丢失的原因很多,这就需要我们不断发现去总结错误产生的

原因,找到解决的方法。

文献:

邵良杉等,(C#)[M].:清华出版社,2007:192-193.

更多推荐

aspsession