【问题标题】:how to set session never expire in ASP如何在 ASP 中设置会话永不过期
【发布时间】:2009-06-06 04:04:40
【问题描述】:

我正在使用带有 IIS 6.0 的 ASP Classic (1.1)。有没有设置会话永不过期的选项?

提前致谢, 乔治

【问题讨论】:

    标签: session iis asp-classic


    【解决方案1】:
    Session.Timeout=5
    

    这意味着它会在 5 分钟内超时。我不认为您可以将其设置为无穷大,但您可以将其设置为大约很大的数字。

    【讨论】:

    【解决方案2】:

    您可以以分钟为单位指定 Session.Timeout 值。 或者让您的页面每 n 分钟轮询一次服务器(一个 javascript 函数可以做到这一点,或者您可以设置一个带有 refresh-content 的虚拟 iframe 以每 n 分钟调用一个虚拟 asp 页面)。

    这样会更好(尽管轮询会对您的服务器造成负担,但不要太频繁地轮询),因为如果您将会话超时设置为非常高(或无限...)的值,您最终会导致 asp 崩溃出现内存不足错误(我猜应用程序池将重新启动)。

    当用户在超时到期之前调用您应用程序上的任何 asp 页面时,会话将保持活动状态。如果您的用户关闭其浏览器,您的应用程序将无法收到通知,asp 将不得不等待超时来清理内存。这意味着会话将在用户离开后在内存中保留 n 分钟,n 是超时时间。

    不需要无限会话(可以通过轮询来解决),使用超时参数进行调整将使您的应用程序更加脆弱。

    如果您想长时间存储信息(基本上,在您的应用程序的整个生命周期中),您最好使用 Application 对象,它是一个字典,就像 Session 一样,但它是一个单例,任何人都可以访问在服务器上。

    【讨论】:

    • 谢谢@Yann! 1.我想和你确认Application对象作为会话对象永不过期? 2.我认为您建议的最佳方式是设置一个相对较短的超时时间并通过javascript或内容刷新设置刷新页面?原因是服务器端会及时释放会话内存?我的理解正确吗? 3.“如果您将会话超时设置为非常高(或无限......)的值,您最终会导致 asp 崩溃并出现内存不足错误(我猜应用程序池将重新启动)。” -- 由长时间的超时值导致服务器内存中的会话时间过长?
    • 4. ASP经典会话中没有办法为过期时间设置无限值(我的意思是ASP经典语言和运行时不直接支持它)?
    • 当应用程序从应用程序池中退出时,应用程序将被清除,如果站点的流量相对较低,它将从应用程序池中退出,并且应用程序对象中的任何数据都将丢失。如果你想在那里持久化任何东西,那么你需要在其中存储一个数据库或其他一些后端存储
    【解决方案3】:

    更改网站/ASP 会话超时的步骤:

    1. 从控制面板打开 IIS 管理器。
    2. 选择您的网站
    3. 在右侧面板的 IIS 组下找到“ASP”,然后双击高级属性。
    4. 在会话属性下找到超时
    5. 根据需要设置会话超时。
    6. 在操作窗格中选择应用以保存所做的更改。

    另外,请参考下面的截图

    【讨论】:

      猜你喜欢
      • 2015-05-28
      • 1970-01-01
      • 1970-01-01
      • 2013-09-19
      • 1970-01-01
      • 1970-01-01
      • 2013-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多