默认情况下,会话(Session)信息是存放在进程内的,所谓进程内,就是指IIS专门创建的w3wp进程。很显然,如果进程因故崩溃,就会丢失会话信息。同时,因为是在进程内,所以就无法跨进程进行共享,这对于横向扩展(负载均衡设计)是一个障碍。
那么除了将会话信息存放在进程内这种方式之外,还有没有其他方式呢?ASP.NET提供了另外两种,第一种是用一个所谓的ASP.NET状态服务来维护信息,如下设置(在web.config里面)
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="false" timeout="20"></sessionState>
还有一种是通过SQL Server来维护信息。但该方法速度最慢。
<sessionState mode="SQLServer" sqlConnectionString="Data source=127.0.0.1;Integrated security=true" cookieless="false" timeout="20"></sessionState>
所需要的数据库可以通过如下方式添加