通过ASP.NET StateServer实现进程外Session存储
2015-06-03 17:32
711 查看
通过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>
[csharp] view
plaincopy
<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));
}
PS:原以为打开浏览器,设置Session后关闭浏览器,再打开Session会保存,但经测试,每次关闭浏览器再打开后会导致Session丢失...但只要浏览器不关闭,即使网站服务器关闭,下次在访问时,Session依然会保持...猜测是新的窗口打开默认判断打开新的对话故丢失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>
[csharp] view
plaincopy
<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));
}
PS:原以为打开浏览器,设置Session后关闭浏览器,再打开Session会保存,但经测试,每次关闭浏览器再打开后会导致Session丢失...但只要浏览器不关闭,即使网站服务器关闭,下次在访问时,Session依然会保持...猜测是新的窗口打开默认判断打开新的对话故丢失Session,具体原因未知...若有人有解决方案,望告知
相关文章推荐
- ASP.NET(C#)实现页面计时(定时)自动跳转
- 【转】asp.net中@page指令的属性Inherits、Src、CodeBehind区别
- Asp.net MVC中的ViewData与ViewBag
- ASP.NET实现TreeView的XML数据源绑定实例代码
- KafkaSpout之PartitionManager
- [Asp.net 5] Logging-新日志系统目录
- asp.net代码操作xml示例
- AspNet MVC4 教学-23:Asp.Net MVC4 Display And Editor 模板技术快速应用Demo
- Asp.net Mvc 提升命名空间优先级
- Asp.net Mvc Controller 同步执行
- 使用 WPF+ ASP.NET MVC 开发 在线客服系统 (一)
- asp.net上传文件
- ASP.NET获取客户端信息,获取客户端IP等等
- asp.net 将本地excel表导入网页 并在gridview中显示
- asp.net menu 控件样式 范例(转载)
- 浅析ASP.NET回车提交事件
- 解读ASP.NET 5 & MVC6系列(17):MVC中的其他新特性
- ASP.NET 生成二维码(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
- 使用 WPF+ ASP.NET MVC 开发 在线客服系统 (一)
- ASP.NET 4.0 site displaying error - ISAPI “Restric