ASP.NET中Session的状态保持方式浅议

来源:互联网 发布:华为交换机给端口命名 编辑:程序博客网 时间:2024/06/10 04:18
ASP.NET中Session的状态保持是由web.config文件中的system.web标记下的sessionState标记的mode属性来决定的。该属性有四种可能的值:Off、Inproc、StateServer和SQlServer.
1.设为Off会禁用Session.
2.Inproc是缺省的设置,这种模式和以前的ASP的会话状态的方法是类似的,会话的状态会被保存在ASP.NET进程中,它的优点是显而易见的:性能。进程内的数据访问自然会比夸进程的访问快。然而,这种方法Session的状态依赖于ASP.NET进程,当IIS进程崩溃或者正常重起启时,保存在进程中的状态将丢失。
3.ASP.NET提供了一个Windows服务:ASPState,这个服务启动后,ASP.NET应用程序可以将mode属性设置“SateServer”,来使用这个Windows服务提供的状态管理方法。使用这种模式,会话状态的存储将不依赖IIS进程的失败或者重启,会话的状态将存储在StateServer进程的内存空间中。
4.ASP.NET还提供了把Session保存到SQLServer的能力。ASP.NET应用程序可以将mode属性设置“SQLServer”来开启这个功能。

以下着重介绍ASP.NET提供的两种进程外保持会话状态的方法(即:3,4)
使用 StateServer 保存 Session
首先需要开启ASP.NET State Service,步骤如下图所示:


Web.Config文件中追加如下代码:
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" />

Session 放入 SQLServer 保存
修改Web.Config文件中sessionState的属性如下:
<sessionState mode="SQLServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="Data Source=CEC-SHENBIN;User ID=sa;Password=sa;" cookieless="false" timeout="20" />
打开文件夹:WINDOWS/Microsoft.NET/Framework/v2.0.50727,找到InstallSqlState.sql文件,在MS-SQL2000下运行之。
可以使用企业管理器查询数据库,在tempdb下有ASPStateTempApplications和ASPStateTempSessions两张数据表生成。
如此即可将Session保存进数据库中。

参考资料:
http://www.cnblogs.com/pingkeke/archive/2007/08/24/868024.html
http://netlynx206.javaeye.com/blog/216407
http://bbs.wangqi.com/showtopic-7515.html
http://www.cnblogs.com/a311300/archive/2008/07/11/1241072.html
原创粉丝点击