加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

IIS6中经典ASP的会话状态和垃圾回收

发布时间:2020-12-16 09:56:41 所属栏目:asp.Net 来源:网络整理
导读:这是一个回归问题,可能相对基础,但我不知所措. IIS如何管理Classic ASP会话状态? 我们有一个应用程序在会话中存储用户信息,当许多用户使用该应用程序时,它似乎是用户的回收会话,即使“过期时间”尚未过去. 我们怀疑当会话状态使用了一定量的内存时,它开始回
这是一个回归问题,可能相对基础,但我不知所措.

IIS如何管理Classic ASP会话状态?

我们有一个应用程序在会话中存储用户信息,当许多用户使用该应用程序时,它似乎是用户的回收会话,即使“过期时间”尚未过去.

我们怀疑当会话状态使用了一定量的内存时,它开始回收最旧的会话对象或类似的东西.

如果这是正确的,有没有办法用现有的应用程序代码来控制它?

谢谢!

解决方法

当托管ASP应用程序的进程终止时,ASP会话将作为简单存储在内存COM对象中,因此所有会话都将被存储.

ASP不会“回收”活动会话.但是,还有许多其他情况会影响ASP会话.

应用程序池空闲超时

“会话”似乎过早超时的一个幻象原因是因为所讨论的“会话”在开发期间刚刚进行测试.因此,当开发人员正在检查页面内容或查看某些代码时,没有进一步的请求到达该网站,因为它实际上不是一个实时网站.

在IIS管理器中,打开运行ASP应用程序的池的属性.看一下Performance选项卡.空闲超时默认为20分钟.因此,如果您指定了60分钟的会话超时并且您正在“测试”该超时,那么您实际上发现您的会话已在20分钟内超时.缺乏活动已经杀死了应用程序池.

应用程序池回收

IIS可以回收运行ASP应用程序的应用程序池.回收意味着当前托管ASP应用程序的现有进程集不再接受新请求.新请求转到一组新进程,旧进程将在完成未完成请求后终止.

可以配置一系列不同的设置和标准来触发应用程序池的回收.查看池属性对话框的“回收”选项卡.

如果您认为可能存在对内存的过度需求,则内存回收部分可能会指示原因.

网络花园

应用程序池可以包含多个进程来运行同一组应用程序.返回性能选项卡,注意底部的Web Garden部分.默认情况下,此值设置为1.但是,多个工作进程将对ASP会话造成严重破坏.如上所述,ASP会话是简单的内存中COM对象.如果特定会话的后续请求被抛弃给不同的工作者,则一个工作者将无法访问另一个工作者的会话对象.

Session.Abandon或Session.Clear

逻辑错误有时可能是会话显然消失的原因.在会话生活中的不适当的位置调用上述方法可能会导致问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读