gpt4 book ai didi

经典 ASP 的 IIS6 中的 session 状态和垃圾收集

转载 作者:行者123 更新时间:2023-12-02 05:30:13 25 4
gpt4 key购买 nike

这是一个有点复古的问题,而且可能是相对基础的,但我不知所措。

IIS 如何管理经典 ASP session 状态?

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

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

如果这是正确的,是否有某种方法可以使用现有的应用程序代码来控制它?

谢谢!

最佳答案

当托管 ASP 应用程序的进程终止时,ASP session 将作为简单的内存 COM 对象存储,所有 session 也将如此。

ASP 不会“回收”事件 session 。然而,还有许多其他情况可能会影响 ASP session 。

应用程序池空闲超时

“ session ”似乎过早超时的一个幻象原因是因为相关“ session ”在开发过程中刚刚经过测试。因此,当开发人员检查页面内容或检查某些代码时,不会有进一步的请求到达该网站,因为它实际上不是一个实时网站。

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

应用程序池回收

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

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

如果您认为内存需求可能过多,那么内存回收部分可能会指出原因。

网络花园

应用程序池可以包含多个进程来运行同一组应用程序。返回“性能”选项卡,注意底部的“网络花园”部分。默认情况下,该值设置为 1。但是,多个工作进程会对 ASP session 造成严重破坏。如上所述,ASP session 是简单的内存中 COM 对象。如果对特定 session 的后续请求被分发给不同的工作人员,一个工作人员将无法访问另一个工作人员拥有的 session 对象。

Session.Abandon 或 Session.Clear

逻辑错误有时可能是 session 明显消失的原因。在 session 生命周期中的不适当时刻调用上述方法可能会导致问题。

关于经典 ASP 的 IIS6 中的 session 状态和垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1428862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com