每个客户(严格的说应该是浏览器)访问网站时,都会创建相应的Session,用来保存客户的状态信息。
五种模式介绍
根据保存位置不同,共有5种模式。
(1)InProc模式(进程内模式) 。为默认设置。
会话状态存储在Web服务器上的内存中。
(2)StateServer模式(状态服务器模式)。
会话状态存储在一个名为ASP.Net状态服务的单独进程中。这确保了在重新启动Web应用程序时会保留会话状态,并让会话状态可用于网路场中的多个Web服务器。
(3)SQL Server模式。
会话状态存储到一个SQL Server数据库中。这确保了在重新启动Web应用程序时会保留会话状态,并让会话状态可用于网路场中的多个Web服务器。
(4)Custom模式
此模式允许您指定自定义存储提供程序。
(5)Off模式
此模式禁止会话状态。
设置
通过再Web.config文件中设置sessionState元素的mode属性指定会话模式
<system.web> //SQLServer方式 <sessionState mode="SQLServer" sqlConnectionString="server = 192.168.24.151;uid=**;Pwd=***" timeout="525600"></sessionState> //InProc方式 <sessionState mode="InProc" timeout="525600"></sessionState> </system.web>
525600单位是分钟。因为老师自己使用,想要避免重复的登录,故而把过期时间设置成了1年,也是最大值,够狠吗。
经试验,对于进程内模式,虽然设置有效期也是1年,但是时间不到2小时,session就销毁了。很容易理解,内存中的东西,如果不用,操作系统自然会回收再利用。所以,我选择用SQL Server模式来解决这个问题。
SQL Server模式
- 注册数据库ASPState。
执行InstallSqlState.sql
文件位置C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/InstallSqlState.sql
- 在ASPState中创建和membership相关的一些表、存储过程。
执行Aspnet_regsql.exe
文件位置C:\Windows\Microsoft.NET\Framework\v2.0.50727\Aspnet_regsql.exe
- 设置Web.config
参考
http://www.cnblogs.com/BoyXiao/archive/2010/03/01/1675659.html
无法打开登录所请求的数据库 "ASPState"。登录失败。 用户 'NT AUTHORITY/SYSTEM' 登录失败。
会话状态模式之SQL Server
最新推荐文章于 2018-12-27 23:24:00 发布