asp.net 配置Session的方式

Session是什么?简单地说就说服务器给客户端会话的一个编号。


怎样配置Session?看下web.config的那段代码。

<configuration>
  <system.web>
    <sessionState mode=" Off | InProc | StateServer | SQLServer "
                       cookieless=" true | false "
                       timeout=" number of minutes "
                       stateConnectionString=" tcpip=server:port "
                       sqlConnectionString=" sql connection string "
                       stateNetworkTimeout=" number of seconds " />
  </system.web>
</configuration>
其中各个节点属性:
mode : Session的存储方式(必有的属性). 
              InProc: 将Session存到进程内(这是default值).
              Off: 禁用Session.
              StateServer: 将Session存到独立的状态服务中(ASP.NET State Service).
              SQLServer: 将Session存到SQLServer中.
cookieless : 设置客户端Session存储的方式.
                    false: 使用Cookie模式(default).
                    true: 使用Cookieless模式.
timeout : 设置Session过期时间(default is 20 minutes).
stateConnectionString : 设置Session独立存放的状态服务所在的服务器的名称(地址)和端口号. 当mode="StateServer"时, session非本服务器存放时候,这个属性就是必须的.
sqlConnectionString : 设置与SQLServer的连接字符串. 当mode="SQLServer"时, 这个属性时必须的.
stateNetworkTimeout : 设置当mode="StateServer"时, 经过多少秒空闲后, 断开Web服务器与存储状态信息服务器的TCP/IP连接(default is 10 seconds).


ASP.NET中客户端Session的存储:

      ASP.NET中, 默认是使用Cookie存储Session的. 如果将 cookieless="false" 改成 cookieless="true", 则Session就不用Cookie来存储了, 而是使用URL来存储.


ASP.NET中服务器Session的存储:

1:第一种 放在进程中 

当mode="InProc"时, 服务器的Session存储在IIS进程中. 当IIS关闭,重启时, 这些Session信息就会丢失. 但这种模式最大的好处就是性能最高.

 <sessionState mode="InProc" ></sessionState>

2:第二种 数据库中

当mode="SQLServer"时, 服务器的Session就是存储到SQLServer数据库中的.要将Session存放到SQLServer数据库中去, 首先需要在SQLServer中建立一个存储Session的数据库.

必须使用命令行创建,如下:

            cd c:\Windows\Microsoft.NET\Framework\v2.0.50727
            aspnet_regsql.exe -S 127.0.0.1  -U sa   -P 123456 -d MySessionDataBase -ssadd -sstype c

如图(服务器:127.0.0.1,有的电脑不行,换成 点“ . ”就行了):

asp.net 配置Session的方式_第1张图片

然后修改配置文件

    <sessionState mode="SQLServer" allowCustomSqlDatabase="true" sqlConnectionString="Data Source=.;Initial Catalog=MySessionDataBase;User ID=sa;Password=123456;Integrated Security=True">
    </sessionState>


3:第三种 :

当mode="StateServer"时, 服务器的Session就存储在"ASP.NET State Service"这个服务的进程中. 在服务中找到名为:"ASP.NET State Service"的服务, 启动这个服务. 在资源管理器的进程中就能找到一个名为:"aspnet_state.exe"的进程, 这个就是我们保存Session的进程.
      "ASP.NET State Service"服务可以与Web服务器分开. eg: Web服务器在192.168.0.100上, "ASP.NET State Service"服务在192.168.0.101上, 则可以进行设置: mode="StateServer" stateConnectionString="tcpip=192.168.0.101:42424".

      当ASP.NET State Service和web服务器在一台电脑上的时候,配置如下:

<sessionState mode="StateServer" ></sessionState>
然后在服务中开启Asp.net状态服务(win7--控制面板--管理工具---服务)

asp.net 配置Session的方式_第2张图片


你可能感兴趣的:(asp.net 配置Session的方式)