【问题标题】:User driven session expiration用户驱动的会话到期
【发布时间】:2011-05-27 08:42:36
【问题描述】:

我需要为我的 ASP.NET 网站用户提供一种方法来控制他们的会话超时。 我正在使用FormsAuthenticationTicketcookies

我想为用户提供一种方法来指定会话保持活动的时间。范围可以从几分钟到 1 天甚至更长。

我正在使用idleTimeout(我问了一个问题here)。

另外,我将用户输入的值保存在数据库中,并使用该值初始化FormsAuthenticationTicket

我还有 2 个问题:应用程序池和 cookie。我的网站在专用的应用程序池下运行。我是否也需要更改 App Pool 的 idleTimeout 属性?当然不是以编程方式。

无论如何,我的问题是:需要进行哪些其他设置才能动态设置会话到期并在任何时间间隔下工作

谢谢。

编辑:我在 Windows Server 2008 机器上使用 IIS7。

【问题讨论】:

    标签: c# asp.net iis-7 windows-server-2008


    【解决方案1】:

    将会话超时时间过长绝不是一个好主意,因为您会使服务器上的某些资源保持忙碌,并且如果您的 Web 应用程序被许多不同的用户访问,则可能会影响服务器性能。

    无论如何,您可以使用以下代码以编程方式更改会话超时

    Session.TimeOut= [=nMinutes]
    

    请记住,会话超时应小于应用程序池空闲超时,因此如果您增加会话超时,您也必须增加应用程序空闲超时。否则,应用程序将被回收。如果应用程序被回收,会话将自动过期。

    允许的最小值为 1 分钟,最大值为 1440 分钟。

    【讨论】:

    • 谢谢。似乎可以从妈妈的位置控制会话寿命......顺便说一句,我理解高内存使用的风险,但我们不介意。
    • 是的,每次请求后都会重新计算超时(通过将超时值添加到实际时间:-)
    • 我知道,但如果用户想要的话,我想找到方法让会话尽可能保持活跃。
    • 有一些方法可以让您使用 JavaScript 保持会话活动,但再次关注性能问题。我知道目前您并不关心内存问题/服务器资源,但您应该始终尝试使您的软件尽可能具有可扩展性(您永远不知道未来)
    • 暂时不用担心,因为客户想要这个功能,所以我需要提供。我们将在时机成熟时解决任何相关问题(如内存使用)。顺便说一句,JS好像不太靠谱。
    猜你喜欢
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 2015-06-26
    • 2011-08-23
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多