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>其中各个节点属性:
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--控制面板--管理工具---服务)