【问题标题】:Increase session timeout on .net mvc 3增加 .net mvc 3 上的会话超时
【发布时间】:2011-11-03 21:48:31
【问题描述】:

我已经在我的 web.config 的 system.web 节点中添加了这个

<sessionState mode="InProc" timeout="600" />

但我的会话将在 30 分钟内超时。

我还需要做些什么来增加会话超时时间吗?

我的 web.config 中也有一个表单身份验证节点,但我没有在网站上使用任何身份验证。表单身份验证的超时值为 2880...但同样,我根本没有进行任何身份验证...

【问题讨论】:

    标签: asp.net-mvc-3 session-timeout


    【解决方案1】:

    但我的会话将在 30 分钟内超时。

    我怀疑是 IIS 在一段时间不活动后回收应用程序池。而且由于您的会话存储在内存中,因此当 Web 服务器关闭应用程序域时,它们的内容将不复存在。

    在 IIS 中查看您的应用程序的应用程序池的属性。您将看到有允许配置此设置的设置。当 IIS 可能会回收您的应用程序池时,还有一些条件,例如内存或 CPU 阈值限制。如果您想要持久会话,则需要使它们脱离进程(会话状态服务器或 SQL)。

    【讨论】:

    • 好的,我确实在我的应用程序池中看到它说空闲超时 20 分钟。如果我将该值增加到 600(就像我在 web.config 中所做的那样)会覆盖 web.config 中的任何内容吗?我问是因为我还有其他需要调整的站点,如果我不必将 sessionState 添加到 web.config,那将为我节省一步。另外,我找不到任何关于条件的信息,也找不到在 IIS 中设置模式的方法……我错过了什么吗?
    • @ChristopherJohnson,在 IIS 中更改此设置不会覆盖 web.config 中的任何内容。这纯粹是IIS。请记住,即使您在 IIS 中将此设置更改为 600,也无法保证 IIS 不会回收您的应用程序池。正如我在回答中所说,这可能发生在您无法控制的不同情况下。例如,内存或 CPU 阈值使用情况。正如我在回答中所说,确保持久会话的唯一可靠方法是使它们脱离进程,这样它们就不会与可能被 IIS 困扰的应用程序域绑定。
    • 是的,我明白了,但我不能 100% 确定在哪里进行设置更改以使其“脱离进程”...这是应用程序池属性中的设置吗?
    • @ChristopherJohnson,这是 web.config 中 sessionState 标签的模式 attribute。它的可能值为Off|InProc|StateServer|SQLServer。您正在寻找 StateServer 或 SQLServer。您可以在此处了解不同的模式:msdn.microsoft.com/en-us/library/ms178586.aspx
    猜你喜欢
    • 1970-01-01
    • 2018-06-05
    • 2012-01-29
    • 2016-12-20
    • 1970-01-01
    • 2017-12-16
    • 2019-09-27
    • 1970-01-01
    • 2016-03-02
    相关资源
    最近更新 更多