当前位置:  开发笔记 > 后端 > 正文

应用程序池回收如何影响ASP Net会话状态?

如何解决《应用程序池回收如何影响ASPNet会话状态?》经验,为你挑选了1个好方法。

我知道,当应用程序池被回收时,会启动一个新的工作进程,但我对在此过程中如何处理过期和有效会话感到困惑?传递给新的工作进程线程哪些被淘汰?它会做什么:

用户A的会话已过期

用户B的会话有效

在回收之后,当用户A和用户B将要求他们的会话状态是什么时?



1> StuartLC..:

如果您有一个Web服务器,并且您已使用InProcSessionState持久性的默认模式,那么您在服务器代码中添加到会话的Dictionary中的任何数据都将在App Pool循环期间丢失 - 在循环之后,你的代码接下来访问SessionState字典中的一个条目,它将返回null.

如果您在负载均衡器上有多个Web服务器,会话状态配置错误InProc,并且用户返回到其他服务器(即没有粘性路由),则会发生类似情况.

(存储在浏览器上的会话状态cookie可能仍有效几分钟).

允许会话状态"存活"应用程序池回收,服务器崩溃或跨越服务器场的方式是保留存储在其中的数据SessionState,以便服务器(或多个服务器)可以在用户会话时再次检索数据回报.最简单的方法是使用开箱即用的解决方案之一,即单独的StateServer进程,或在SqlServer数据库中存储状态.自定义持久性也是一种选择.

一个警告 - 请注意,您存储在"进程外"模式中的任何数据(例如StateServerSqlServer需要可序列化) - 当您退出时,这可能是一个重大变化InProc.


我也尝试过 Session [“ someKey”]在回收后仍然存在。:(非常感谢您的努力,但我仍然期待着您和其他人对我的诊断和帮助。
推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有