ASP.NET会话(Session)保存模式 (1)

一、        引发 Session 丢失的几种原因
动过手写代码的人都知道,Session 丢失是比较常见的事。以下是本人这几年所遇到的,能够引发 Session 丢失的原因,不敢说是百分百,丢失概率还是特别高的。错…,简直可以说是“相…当…”高哇 ^_^"
1、    存放 Session 的电脑重启(废话,若这样都不丢,你神仙啊)
2、    InProc 模式:aspnet_wp.exew3wp.exe 在“任务管理器”中或其它情况下导致其进程被终止运行。
3、    InProc 模式:修改 .cs 文件后,编译了两次(只编译一次,有时不会丢失)
4、    InProc 模式:修改了Web.config
5、    InProc 模式,Windows 2003 环境:应用程序池回收、停止后重启
6、    InProc 模式:服务器上 bin 目录里的 .dll 文件被更新
以上列举的都是 InProc 模式下,容易引发解析 ASP.NET 应用程序重置的原因。是不是觉得很窝火?之前我也有这种感觉,慢慢就习惯啦,再后来就干脆不用这种模式了。于是乎,就有了使用下列两种模式的尝试,现写出来与大家一起分享。
二、        使用 StateServer 保存 Session
StateServer模式的实质是,把Session 存放在一个单独的进程里,此进程独立于aspnet_wp.exew3wp.exe。启用此服务后,在“任务管理器”中可以看到一个名为aspnet_state.exe的进程,下面开始说明一下设置的具体步骤:
 
1、    修改注册表(关键步骤,如下图)
运行regedit打开注册表找到HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/aspnet_state/Parameters 节点AllowRemoteConnection 的键值设置成“1”(为允许,代表禁止)→设置Port (端口号)
注意事项:
       a)、若ASP.NET State Service正在运行,修改注册表内容后,则需要重新启动该服务
b)、注意端口号的键值是以十六进制储存的,可以使用十进制进行修改,42424是默认的端口
c)AllowRemoteConnection 的键值设置成“1后,意味着允许远程电脑的连接,也就是说只要知道你的服务端口,就可享用你的ASP.NET State Service,即把 Session 存放在你的电脑进程内,因此请大家慎用;键值为“0时,仅有stateConnectionString为“tcpip=localhost: 42424与“tcpip=127.0.0.1:42424的情况,方可使用ASP.NET State Service
 
 
2、    开启ASP.NET State Service(如下图)
右键点击“我的电脑”→管理服务与应用程序服务双击“ASP.NET State Service启动(可设为“自动”)
说明:只要安装了 .Net Framework v1.0/v1.1 ,都拥有此服务。
 
 
3、    更改Web.config
打开Web.config找到<sessionState>节点内容
<sessionState
            mode="InProc"
            stateConnectionString="tcpip=127.0.0.1:42424"
            sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
            cookieless="false"
            timeout="20"/>
 
将其改为以下内容
<sessionStatemode="StateServer"  stateConnectionString="tcpip=192.168.0.2:42424"timeout="20"/>
注意事项:
       a)、设成StateServer 后,必须要有对应的stateConnectionString
       b)、注意 IP 地址(可以是远程计算机 IP、计算机名称、域名)与端口号端口号需与ASP.NET State Service的服务端口一致
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值