在我的ASP.NET MVC5 website中,web.config中的登录和会话超时如下:
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" slidingExpiration="true" timeout="60"/>
</authentication>
<sessionState mode="InProc" timeout="60"/>
</system.web>
仍然会话或身份验证在五分钟内完成。我已经接近我的网络托管服务,以增加IIS中的超时,并在增加IIS中的超时后共享screenshot,但没有任何改变。不知道为什么会这样。
答案 0 :(得分:1)
首先,尝试在Global.asax中的Session_Start
方法上设置会话超时:
void Session_Start(object sender, EventArgs e)
{
Session.Timeout = 60;
}
注意:通过使用进程内会话状态,您的会话将清除每个IIS应用程序池回收,这些回收在您的问题应用程序池中在5分钟后回收。
如果上述尝试不起作用并且您可以访问服务器的IIS管理,请执行以下步骤:
Regular time interval (minutes)
并将其设置为60,然后应用您的更改。如果您无法同时访问IIS管理器和在SQL Server配置中,您可能希望尝试基于数据库的会话状态管理而不是InProc
模式(请参阅下面的MSDN参考)。
基于数据库的会话状态需要将模式属性更改为SQLServer
,例如:
<system.web>
<sessionState mode="SQLServer" sqlConnectionString="Integrated Security=SSPI;Data Source=SERVERNAME;Initial Catalog=DATABASE" />
</system.web>
参考:
答案 1 :(得分:1)
IIS中的 SystemIdleTime 变量存在问题。我请求我的托管服务提供商将此值增加到30分钟并且它有效。
它表示当没有30分钟的请求时,当应用程序池关闭时,我的所有会话变量都将被擦除。该值将覆盖网站web.cofig中设置的会话超时。您可以将其设置为0以指示应用程序池永远不会关闭,然后您可以通过web.config控制会话的超时。我也发现了这个好article -