`
netlynx206
  • 浏览: 40236 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

session突然丢失引起的思考

    博客分类:
  • .net
阅读更多
前一段时间做一个网站时,遇到session突然丢失的问题,郁闷了好几天,在网上查了查,找了一篇不错的文章与大家分享,这片文章从csdn转载的

大家可在 MSDN 2003 中搜索一下 <sessionState> 即可看到关于 Web.config 中的<sessionState> 节点元素的描述,共有 OffInProcStateServerSQLServer 四种模式。OffInProc 分别指“不启用”、“进程内保存(默认值)”,此两种模式没啥讲的,所谓 InProc 就是把 Session 保存在 aspnet_wp.exe (Windows 2000 解析 ASP.NET页面所用的进程) w3wp.exe (Win2003 的进程) 中,一旦进程被中止或被重置,Session 将丢失。

一、        引发 Session 丢失的几种原因

动过手写代码的人都知道,Session 丢失是比较常见的事。以下是本人这几年所遇到的,能够引发 Session 丢失的原因,不敢说是百分百,丢失概率还是特别高的。错…,简直可以说是“相…当…”高哇 ^_^"

1、    存放 Session 的电脑重启(废话,若这样都不丢,你神仙啊)

2、    InProc 模式:aspnet_wp.exe w3wp.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.exe w3wp.exe 。启用此服务后,在“任务管理器”中可以看到一个名为 aspnet_state.exe 的进程,下面开始说明一下设置的具体步骤:

 

1、    修改注册表(关键步骤,如下图)

运行 regedit 打开注册表 找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters 节点 AllowRemoteConnection 的键值设置成“1”(1 为允许,0 代表禁止)→ 设置 Port (端口号)

注意事项:

       a)、若ASP.NET State Service 正在运行,修改注册表内容后,则需要重新启动该服务

b)、注意端口号的键值是以十六进制储存的,可以使用十进制进行修改,42424 是默认的端口

c)AllowRemoteConnection 的键值设置成“<st1:chmetcnv w:st="on" unitname="”" sourcevalue="1" hasspace="False" negative="False" numbertype="1" tcsc="0">1</st1:chmetcnv>后,意味着允许远程电脑的连接,也就是说只要知道你的服务端口,就可享用你的ASP.NET State Service,即把 Session 存放在你的电脑进程内,因此请大家慎用;键值为“<st1:chmetcnv w:st="on" unitname="”" sourcevalue="0" hasspace="False" negative="False" numbertype="1" tcsc="0">0</st1:chmetcnv>时,仅有stateConnectionString 为“tcpip=localhost: <st1:chmetcnv w:st="on" unitname="”" sourcevalue="42424" hasspace="False" negative="False" numbertype="1" tcsc="0">42424</st1:chmetcnv>与“tcpip=127.0.0.1:<st1:chmetcnv w:st="on" unitname="”" sourcevalue="42424" hasspace="False" negative="False" numbertype="1" tcsc="0">42424</st1:chmetcnv>的情况,方可使用ASP.<st1:place w:st="on"><st1:placename w:st="on">NET</st1:placename> <st1:placetype w:st="on">State</st1:placetype></st1:place> Service

 

 

2、    开启 ASP.NET State Service(如下图)

右键点击“我的电脑”→ 管理 服务与应用程序 服务 双击“ASP.NET State Service 启动(可设为“自动”)

说明:只要安装了 .Net Framework v1.0/v1.1 ,都拥有此服务。

 

更多请察看原文
 

http://blog.csdn.net/cityhunter172/archive/2006/05/14/727743.aspx
分享到:
评论

相关推荐

    session丢失解决方案

    重定向的时候是有session丢失的问题;window.open丢失session问题;使用框架(Frameset)调用不同域名下的页面,会出现此域下页面的Cookies和Session丢失的现象。

    IFrame中Session丢失的解决办法

    在探讨“IFrame中Session丢失的解决办法”这一主题时,我们首先需要理解Session与IFrame的基本概念及其在Web开发中的交互方式。Session是Web应用中用于存储用户特定信息的一种机制,它允许开发者在用户的会话期间...

    Session丢失原因和解决方案

    ASP.NET Session 丢失通常是由多种原因引起的,包括进程重启、Session超时、配置文件更改、应用程序更新或杀毒软件活动。在深入探讨解决方案之前,让我们先理解Session的基本原理。 Session是一种服务器端的状态...

    session丢失解决方法

    在ASP.NET开发过程中,经常会遇到一种情况:当对网站进行某些特定操作(如修改或删除站内目录)时,原本正常的Session会突然失效或丢失。这不仅影响用户体验,还可能导致一系列安全性和功能性的隐患。本文将详细分析...

    关于session丢失问题

    然而,Session丢失问题是一个常见的技术挑战,可能导致用户在使用过程中频繁地重新登录或者丢失相关信息。以下是对这个问题的详细分析和解决策略。 首先,我们需要理解Session丢失的常见原因: 1. **Cookie被禁用...

    Session丢失

    然而,"Session丢失"是一个常见的问题,可能会导致用户体验下降或者功能失效。本文将深入探讨Session丢失的原因以及相应的解决方案。 **1. Session的工作原理** ASP.NET的Session基于HTTP协议,由于HTTP是无状态的...

    session丢失的原因

    session的丢失原因和解决方案,与viewstate和cookie 的区别

    iframe跨域访问时session丢失

    NULL 博文链接:https://thoreau.iteye.com/blog/745100

    Session丢失的原因及解决办法

    Session丢失的原因及解决办法 Session是Asp.net网站的一种重要机制,用于保持用户登录状态和验证码等信息,但是Session丢失的问题却经常出现。那么, Session 丢失的原因是什么?如何解决这个问题呢? Session的...

    feign调用session丢失解决方案.txt

    feign调用session丢失解决方案, Hystrix传播ThreadLocal对象; 自定义熔断策略

    一个服务器搭多个tomcat导致session丢失,或者同一个IP不同端口,多个应用的session会冲突解决方法

    一个服务器上搭建了多个tomcat或者weblogic,端口不一样,同时启动访问时session丢失。如:A,B两个服务,在浏览器中登录访问A后,当前打开的浏览器上在开一个选项卡访问B服务后,回过来点击访问A时session丢失,...

    Asp.net解决session丢失问题的两种方案

    Asp.net解决session丢失问题的两种方案,以及session丢失的原因。参考一些网上资料,自己总结出来解决方案,顺便附带两个测试案例。还有不清楚的请联系我QQ:394023002 附加信息:周

    NET的csharp的session丢失sessionid不一样

    ### 关于.NET中C# Session丢失与SessionID变化问题解析 #### 一、问题背景及概述 在.NET框架中,特别是在使用C#进行Web开发时,Session管理是至关重要的一个环节。Session对象允许服务器存储有关用户会话的信息,...

    阿里P7大牛实战演练到源码透析——分布式环境session丢失爬坑记

    ### 分布式环境中Session丢失问题解析与解决方案 #### 一、引言 在现代互联网应用中,随着业务规模的增长和技术架构的演进,单体应用逐渐演化为微服务架构,而这种架构变化带来的一个常见问题是分布式环境下的...

    Nginx session丢失问题处理解决方法

    在使用Nginx作为反向代理服务器时,有时会遇到session丢失的问题,这通常是由于代理和后端服务器之间交互配置不当引起的。下面是处理和解决Nginx session丢失问题的一些知识点和方法: 1. 了解Session机制:在Web...

    weblogic session丢失

    问题描述中提到的"NULL"可能意味着在实际运行过程中,WebLogic服务器突然清空或无法识别用户的session,导致用户在操作过程中失去已有的状态信息。这可能是由于多种原因引起的,包括配置问题、服务器资源限制、网络...

    Tomcat集群Session丢失解决方案

    NULL 博文链接:https://sch.iteye.com/blog/1278470

    aspnet状态服务和session丢失.pdf

    在这种模式下,即使IIS服务器重启或ASP.NET进程崩溃,由于Session数据存储在数据库中,所以不会丢失。 在ASP.NET中,Session对象是一个关键的特性,它允许开发者在用户的不同请求之间存储和检索数据,以此来维持...

    火狐下uploadify上传丢失session解决(jsp,java)

    解决uploadify上传火狐浏览器下丢失session Flash上传丢失session

Global site tag (gtag.js) - Google Analytics