会话状态模式之SQL Server

  • 每个客户(严格的说应该是浏览器)访问网站时,都会创建相应的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模式

    1. 注册数据库ASPState

    执行InstallSqlState.sql

    文件位置C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/InstallSqlState.sql

    1. 在ASPState中创建和membership相关的一些表、存储过程。

     执行Aspnet_regsql.exe

     文件位置C:\Windows\Microsoft.NET\Framework\v2.0.50727\Aspnet_regsql.exe

    1. 设置Web.config

     

    参考

    会话状态模式

     

    http://www.cnblogs.com/BoyXiao/archive/2010/03/01/1675659.html

     

    无法打开登录所请求的数据库 "ASPState"。登录失败。 用户 'NT AUTHORITY/SYSTEM' 登录失败。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值