通过ASP.NET StateServer实现进程外Session存储

通过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 plain copy
  1. <span style="white-space:pre">    </span>if (Session["Test"] == null)  
  2.         {  
  3.             Response.Write("Session星球上暂时还没有人,正在造人~");   
  4.             Session["Test"] = new Person("小航哥""男", 18);  
  5.         }  
  6.         else  
  7.         {  
  8.             Person p = Session["Test"as Person;    <strong><span style="color:#33ff33;"> </span><span style="background-color: rgb(102, 255, 153);">//注意,要使用StateServer保存对象,除了基本类型的数据,其他类对象必须可以序列化[Serializable]</span></strong>  
  9.             Response.Write(String.Format("Session星球有一个人,他叫{0},{1},{2}岁",p.Name,p.Sex,p.Age));  
  10.         }  


PS:原以为打开浏览器,设置Session后关闭浏览器,再打开Session会保存,但经测试,每次关闭浏览器再打开后会导致Session丢失...但只要浏览器不关闭,即使网站服务器关闭,下次在访问时,Session依然会保持...猜测是新的窗口打开默认判断打开新的对话故丢失Session,具体原因未知...若有人有解决方案,望告知
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值