Web.Config 文件中 Session 的配置
<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>
sessionState标签中有个属性mode,它可以有3种取值:InProc、StateServer、SQLServer(大小写敏感)。
1.InProc 值
默认情况下是InProc,也就是将Session保存在进程内(IIS5是aspnet_wp.exe,而IIS6是W3wp.exe),这个进程不稳定,在某些事件发生时,进程会重起,所以造成了存储在该进程内的Session丢失。
2.StateServer 值
设定成这个值后,是将 Session 保存在 stateConnectionString 属性指定的电脑的 StateServer 进程内
StateServer 是本机的一个服务,默认情况是不启动的。
stateConnectionString 属性可以指向别的电脑,也就是可以把 Session 保存在本机或别的电脑的 StateServer 进程内
这样就可以实现位于不同电脑上的 ASP.NET 程序互通 Session 了
3.SQLServer 值
设定成这个值后,是将 Session 保存在 sqlConnectionString 属性指定的数据库内
mode 值为 StateServer 和 SQLServer 时,Session 中不能存放对象,如果一定要,那必须在定义该类的时候标识
[Serializable]
public class InfoUser
{
}
这里使用了关键子 [Serializable]
Session["InfoUser"] = new InfoUser();
如表示[Serializable],上面一行的代码就会提示“无法序列化会话状态。”



