ASP.NET应用中会话状态丢失及解决策略
2011-09-23曹守富
曹守富
(湖南广播电视大学,湖南长沙 410004)
ASP.NET应用中会话状态丢失及解决策略
曹守富*
(湖南广播电视大学,湖南长沙 410004)
在开发和使用基于ASP.NET技术的B/S模式应用系统时,经常会遇到会话状态丢失的情况。产生这种情况的原因因系统环境或者应用程序配置的不同而不同。本文首先介绍ASP.NET中的会话,然后归纳会话丢失情况并分析原因,给出相应的解决策略。
会话状态;会话超时;会话丢失
一、ASP.NET 中的会话
ASP.NET应用程序的会话表示用户在与该站点连接期间发送的所有请求,会话状态是用户在会话期间生成和使用的持久性数据的集合。每个会话的状态都彼此独立,在用户会话结束时将不复存在。默认情况下,站点的会话状态保存时间是20分钟。ASP.NET内置了会话状态操作的对象,使用ASP.NET内置的会话对象,可以使我们做到:对从单个浏览器客户端到服务器上的应用程序会话的请求通过会话标识(Session ID)进行自动识别,将会话有效期内保存的数据存储在服务器上以供跨多个页面请求时使用。
二、单一Web服务器情况下的会话状态丢失
1.会话状态存储
ASP.NET中会话状态的保存方式可通过设置web.config文件中<sessionState>标记的属性进行设置,标记中的mode属性决定了会话的存储方式,主要有以下三种取值:
InProc(默认):会话状态以活动对象方式存储在ASP.NET进程(IIS5是 aspnet_wp.exe,而 IIS6是 w3wp.exe)中。配置代码如下:

StateServer:进程外存储,会话状态被序列化后存储到某一台计算机的内存中,需要在这台计算机上启动ASP.NET State Service服务。配置代码如下:

SQLServer:进程外存储,会话状态被序列化后存储在SQL Server数据库中。……
