In-process Mode
In-process mode simply means using ASP.NET session state in a similar manner to classic ASP session state. That is, session state is managed in process and if the process is re-cycled, state is lost. Given the new settings that ASP.NET provides, you might wonder why you would ever use this mode. The reasoning is quite simple: performance. The performance of session state, e.g. the time it takes to read from and write to the session state dictionary, will be much faster when the memory read to and from is in process, as cross-process calls add overhead when data is marshaled back and forth or possibly read from SQL Server.
In-process mode is the default setting for ASP.NET. When this setting is used, the only other session config.web settings used are cookieless and timeout.
If we call SessionState.aspx, set a session state value, and stop and start the ASP.NET process (iisreset), the value set before the process was cycled will be lost.
原来做大型网站,服务器压力大的时候经常出现ASPX进程内Session丢失的问题。现在的公司主要开发应用系统,服务器压力不大,访问量也比较小,很长时间以来没有发生过Session丢失的问题。但是在一次给用户演示的时候发生了奇怪的现象。我经过仔细分析是Session丢失造成的。但是和公司很多技术人员交流,他们都觉得ASPX的Session没有过期的条件下怎么会丢失呢?!
上面摘的这段MSDN上的文章里面确实指出进程内Session在没有过期的情况下也可能会丢失。
由于进程内Session保存于ASPX应用程序域中。其生死是随着ASPX应用程序域生死而变的。当ASPX应用程序重新启动时,进程内Session就会丢失。
当IIS出发.NET对ASPX应用程序进行垃圾回收的时候,就会使ASPX应用程序重起,这一点ASPX应用程序和WinForm应用程序是不同的。这是因为.NET框架会重新创建一个ASPX应用程序副本来响应在垃圾回收过程中的WEB请求,以保证Web服务的连贯性。
而且在windows2003的IIS的应用程序池设置里面有一个设定项,“空闲超时”即在设定的时间内应用程序处于空闲状态的话就会中止这个应用程序以获得更多的资源。这里就隐藏着一个矛盾,因为应用程序中止肯定会造成进程内Session丢失,所以如果这个时间小于ASPX的Session过期时间,那就有可能发生Session未过期而丢失的现象。
关于ASPX进程内Sesion丢失,我在MSDN上面搜到了很多文章,但是没有一个能给出比较好的解决办法,一般的,实在没辙就只有使用进程外Session或SQLServerSession了。事实上如果只保存简单的数据,SQLServerSession也并不是很慢的。我曾经在一个日访问量在几十万的网站上使用SQLServerSession保存登录信息啥的,效果很好
分享到:
相关推荐
Session丢失原因和解决方案.Session原理
session的丢失原因和解决方案,与viewstate和cookie 的区别
Session原理、Session丢失的原因、Session存储的机制、Session丢失的解决方案
IFrame中Session丢失的解决办法
Asp.net解决session丢失问题的两种方案,以及session丢失的原因。参考一些网上资料,自己总结出来解决方案,顺便附带两个测试案例。还有不清楚的请联系我QQ:394023002 附加信息:周
重定向的时候是有session丢失的问题;window.open丢失session问题;使用框架(Frameset)调用不同域名下的页面,会出现此域下页面的Cookies和Session丢失的现象。
asp.net 修改/删除站内目录操作后Session丢失问题
本文实例讲述了ThinkPHP中Session用法。分享给大家供大家参考。具体如下: 在ThinkPHP封装了Session类,用户可以直接使用,常用的方法有: Session::set(name, value):注册 session 。 Session::is_set(name):检查...
asp.net Session丢失的问题处理解决方案
一个服务器上搭建了多个tomcat或者weblogic,端口不一样,同时启动访问时session丢失。如:A,B两个服务,在浏览器中登录访问A后,当前打开的浏览器上在开一个选项卡访问B服务后,回过来点击访问A时session丢失,...
NET的csharp的session丢失sessionid不一样 由于本地浏览器设置或者系统设置,导致sessionid无法准确上传到服务器
NULL 博文链接:https://thoreau.iteye.com/blog/745100
博文链接:https://laorer.iteye.com/blog/41264
因为小程序原生不支持Cookie,因此也不支持Session。 网上找到的的一些方法有缺陷,而且很多累赘,估计没有实际测试过,在此直接给出实测可用的代码。 大概思路就是借助小程序本地储存+网络请求的header可读可写来...
• 问题2:IE浏览器下丢失session,每次刷新页面,都会生成新的sessionID(Firefox浏览器正常) • session、cookie简单实例 理解会话控制的概念 理解一个概念就需要理解他的背景及产生的原因,这里引入WEB环境及其...
服务器session丢失,SessionState 的Timeout),其主要原因有三种 是否使用同一个应用程序池,丢失问题很多
feign调用session丢失解决方案, Hystrix传播ThreadLocal对象; 自定义熔断策略
它的数据存储在内存里,因此,如果Web服务器进程重新启动,session将会丢失。所以,这个模块主要针对小网站,并没有太多的数据存储在session中。安装在使用 mini-session 之前, 你需要先安装 Cookies 包。npm ...
现在Ajax在Web项目中应用广泛,几乎可以说无处不在,这就带来另外一个问题:当Ajax请求遇到Session超时,应该怎么办? 显而易见,传统的页面跳转在此已经不适用,因为Ajax请求是XMLHTTPRequest对象发起的而不