【问题标题】:How to force a 20 minute time-out for sessions?如何强制会话暂停 20 分钟?
【发布时间】:2010-10-16 14:40:03
【问题描述】:

当谈到实际决定会话超时的原因时,我感到非常困惑。

Web 应用程序需要允许 20 分钟的“空闲时间”,然后才能将用户注销(或丢弃)。我在 IIS 中的 sessionState 和 Recycle 工作进程上尝试了不同的设置。超时仍然太短,而且就我的退出-n-dirty 原始测试而言,有点随机。

我在某处读到默认超时为 20 分钟,但在我的应用程序中,它似乎接近 5 分钟。有什么简单的方法可以改变这种情况吗?该应用在 IIS 6 上运行 .NET 3.5。

编辑: 我刚刚意识到实体框架可能与该问题有关,因为用户内容在实体框架中作为上下文保存。实体持有多长时间有时间限制吗?

【问题讨论】:

    标签: asp.net iis entity-framework iis-6 timeout


    【解决方案1】:

    用户将根据您在 web.config 中的身份验证设置注销。

    会话超时将在 web.config 中的会话标签中设置。

    如果它们不同,那么您将看到“有趣”的结果。

    【讨论】:

    • 单独的会话状态似乎并不能解决问题。两者之间有什么区别,如果它们设置为相同的值,我应该/可以同时使用它们吗?
    • 在您的 web.config 中,在您的身份验证设置中,确保它也设置为 20。您是退出登录,还是会话错误?
    • 会话似乎“忘记”了持有用户信息的实体。我玩了很多参数,最后解决了。你的回答有帮助,所以你得到了答案标签。 ;)
    • 很高兴你最后把它整理好了:)
    【解决方案2】:

    http://msdn.microsoft.com/en-us/library/ms972429.aspx

    如果您查看 web.config,您可以编写类似这样的内容

    <configuration>
      <sessionstate timeout="20" />
    </configuration>
    

    在那里你可以设置你的超时时间..

    【讨论】:

    • 感谢您的回答,但正如我在问题中所写,我已经尝试过 sessionstate,但仍然无法获得预期的结果。
    • 您是使用内置登录系统还是自己编写的,会话时间在调试网络服务器中的行为是否相同?
    • 登录是特定于这个系统的——登录时,会根据数据库检查用户名和密码,如果返回实体,则用户以实体中的用户类型登录。我刚刚意识到实体框架可能与它有关。
    【解决方案3】:

    使用会话状态超时。您不想使用 Recycle Worker,因为这将每 N 分钟回收与该 worker 关联的所有会话。如果您使用会话变量,最好将 Recycle Worker 设置为一个非常高的值。

    【讨论】:

    • +1 用于解释 Recycle Worker,但正如我在问题中所写,我尝试了 sessionstate 却没有得到想要的结果。
    猜你喜欢
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 2011-04-30
    • 2015-02-21
    相关资源
    最近更新 更多