CSDN广告是越来越多了,所有博客笔记不再更新,新网址 DotNet笔记
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,有的电脑不行,换成 点“ . ”就行了):
然后修改配置文件
<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--控制面板--管理工具---服务)