【问题标题】:ASP.NET 2.0 Session TimeoutASP.NET 2.0 会话超时
【发布时间】:2010-07-16 00:34:45
【问题描述】:

已经有人在这个论坛上提出了这个关于会话超时的问题。如果有人能再次澄清这一点,将不胜感激。

我有一个 asp.net 2.0 应用程序,如果用户没有做任何活动并按下页面上的按钮(他被重定向到 sessionExpired.aspx 页面),它会在 15-20 分钟后超时。我在 web.config 文件中将会话超时设置为 60 分钟,但用户仍然以某种方式超时。

我有另一个关于会话超时优先级的问题。 IIS 会话超时是否优先于 ASP.NET 会话超时。假设 IIS 会话超时设置为 20 分钟,而 ASP.NET 会话超时设置为 60 分钟,那么 ASP.NET 是否会覆盖 IIS 会话超时。

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    IIS 优先,但它们处理的场景略有不同。

    对于 IIS,应用程序池的默认 20 分钟超时是指传入请求。如果您的应用程序在 20 分钟内根本没有收到任何请求,则应用程序池将进入睡眠状态以节省资源。发生这种情况时,您的应用程序中的所有会话都将消失。

    ASP.NET 会话超时处理每个会话的请求。您的网站可能非常繁忙,但如果一个用户(即会话)在 20 分钟内未处于活动状态,则只会丢弃该会话。

    所以是的,要确保会话保持活动状态 60 分钟,您必须更改 IIS 应用程序池以及 web.config 的超时设置。

    解决此问题的另一种方法是定期向服务器发送一个小的 AJAX“ping”(即带有随机 ID 以防止浏览器缓存的页面请求)。这样,只要用户不关闭浏览器,会话就会被保留。

    【讨论】:

    • 嗨 pbz 可以告诉我如何实现 Ajax ping。
    • 最简单的方法是设置一个webservice(asmx),然后通过ajax调用它;有关如何使用 jquery ajaxlines.com/ajax/stuff/article/jquery_ajax_and_asmx.php 执行此操作的示例请确保您记得将 jquery ajax 调用的缓存设置为 false。无论用户是否登录,您都可以从网络服务返回;如果没有,那么您可以重定向到登录页面或警告他们不再登录(类似于 gmail 所做的)。要让它多次触发,您可以使用 javascript 计时器:stackoverflow.com/questions/460474/…
    猜你喜欢
    • 2011-02-03
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    相关资源
    最近更新 更多