ASP.. NET mvc认证或会话过期比设置更快

本文关键字:设置 过期 会话 NET mvc 认证 ASP | 更新日期: 2023-09-27 18:11:38

NET MVC5网站在web上的登录和会话超时。

<system.web>
  <authentication mode="Forms">
    <forms loginUrl="~/Account/Login" slidingExpiration="true" timeout="60"/>
  </authentication>
  <sessionState mode="InProc" timeout="60"/>      
</system.web>

会话或身份验证仍然在五分钟内完成。我已经联系了我的虚拟主机提供商来增加IIS中的超时时间,他们在增加IIS中的超时时间后分享了一个截图,但没有任何改变。知道为什么会这样吗?

ASP.. NET mvc认证或会话过期比设置更快

首先,尝试在Global.asax:

中设置Session_Start方法的会话超时
void Session_Start(object sender, EventArgs e)
{
    Session.Timeout = 60;
}

注意:通过使用进程内会话状态,你的会话将清除每一个IIS应用程序池回收,在你的问题应用程序池回收5分钟后。

如果上述尝试不起作用,并且您可以访问服务器的IIS管理,请执行以下步骤:

  1. 打开IIS管理器。
  2. 选择应用程序池=>[您的应用程序池名称]=>回收/高级设置
  3. 启用Regular time interval (minutes)并将其设置为60,然后应用您的更改。

如果您无法同时访问IIS管理器&SQL Server配置,你可能想尝试基于数据库的会话状态管理,而不是InProc模式(见下面的MSDN参考)。

基于db的会话状态需要将mode属性更改为SQLServer,例如:

<system.web>
    <sessionState mode="SQLServer" sqlConnectionString="Integrated Security=SSPI;Data Source=SERVERNAME;Initial Catalog=DATABASE" />
</system.web>
参考:

MSDN: https://msdn.microsoft.com/en-us/library/ms178586.aspx

asp.net mvc4应用程序中会话过期太快

这是IIS中SystemIdleTime变量的问题。我要求我的主机提供商将此值增加到30分钟,它工作了。

它表示当应用程序池在30分钟内没有请求时关闭时,我的所有会话变量都将擦除。此值将覆盖网站的web. config中设置的会话超时。您可以将其设置为0,以指示应用程序池永远不会关闭,然后您可以通过web.config控制会话的超时时间。我也发现这篇很好的文章 -