session如何保存在专门的StateServer服务器中
session保存在专门的StateServer中,该种方式,性能损失比sql略好。比inproc据说有10%-15%的性能损失。怎么使用StateServer 服务器呢?
1、初始化StateServer服务器
启动ASP.NET 状态服务【aspnet_state】,该服务默认是手动启动的,可以通过修改注册表,设置为自动启动并允许远程连接。修改方法如下:
修改注册表: [HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/aspnet_state/Parameters]
设置 AllowRemoteConnection = 1 , 设置 Port = 42424 (十进制,默认即为42424)
AllowRemoteConnection ,0仅能本机使用,1可以供其他机器使用.
Port是服务的端口号
2、修改webconfig配置文件
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="false" timeout="60"/>
其中stateConnectionString中的tcpip表示StateServer服务器的ip和端口。
注意StateServer不支持负载均衡,如果是大并发请保存在sql中。
参考资料:
使用一个 SQL 数据库 SQL Server 会话状态的所有应用程序可能导致瓶颈
http://support.microsoft.com/kb/836680/zh-cn
ASP.NET 中 Session 实现原理浅析 [1] /[2]
http://www.cnblogs.com/flier/archive/2004/08/04/30226.html
http://www.cnblogs.com/flier/archive/2004/08/07/30902.html
理解Session State模式+ASP.NET SESSION丢失FAQ [翻译]
http://www.cnblogs.com/tonyqus/archive/2006/10/24/522618.html