通过ASP.NET StateServer实现进程外Session存储
我们平常启动浏览器去访问网站经常会涉及到Session的读和写,但是通常的Session是保存在当前的进程中,即访问网站的浏览器进程,如关闭此浏览器,再打开访问,Session就会丢失...
一般长时间保持Session会用到SqlServer数据库的方式存储Session;
但是如何进程间共享Session呢,一般安装了.NET Framework的电脑,在控制面板"程序"中启动IIS的相关.NET Framework框架功能
然后
1.打开注册表,regedit,找到HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\aspnet_state\Parameters
a.将AllowRemoteConnection值设置为1 //是否启用远程服务,0为仅Localhost
[b.将Port值设置为a5b8(十六进制),即十进制42424(默认值)]
2.打开"服务",找到"ASP.NET State Service"服务,启动该服务。(相关exe位置C:\Windows\Microsoft.NET\Framework64\v4.0.30319)
3.在当前web项目的配置文件web.config文件system.web节点下添加
<sessionState mode="StateServer" stateConnectionString="tcpip=localhost(或远程地址):42424"></sessionState>
- <span style="white-space:pre"> </span>if (Session["Test"] == null)
- {
- Response.Write("Session星球上暂时还没有人,正在造人~");
- Session["Test"] = new Person("小航哥", "男", 18);
- }
- else
- {
- Person p = Session["Test"] as Person; <strong><span style="color:#33ff33;"> </span><span style="background-color: rgb(102, 255, 153);">//注意,要使用StateServer保存对象,除了基本类型的数据,其他类对象必须可以序列化[Serializable]</span></strong>
- Response.Write(String.Format("Session星球有一个人,他叫{0},{1},{2}岁",p.Name,p.Sex,p.Age));
- }