2016-10-05 36 views
1

在我的ASP.NET MVC5 website web.config中的登录和会话超时如下:ASP.NET MVC认证或会话过期速度比设定

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

仍然在五个会话或认证次数我们分钟。我已经找到了我的虚拟主机提供增加在IIS中的超时,他们共享screenshot增加超时在IIS后,但没有任何改变。任何想法为什么发生这种情况。

回答

1

这是一个问题与SystemIdleTime变量在IIS中。我请求我的托管服务提供商将此值增加到30分钟,然后运行。

它表明当没有30分钟的请求时,应用程序池关闭时,所有会话变量都将被清除。该值将覆盖网站web.cofig中设置的会话超时。您可以将其设置为0以表明应用程序池永远不会关闭,然后您可以通过web.config来监控会话超时。我也发现这个不错article -

1

首先,尝试Session_Start方法设置会话超时内的Global.asax:

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参考)基于数据库的会话状态管理。

基于数据库的会话状态需要改变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

Session expires too quickly in asp.net mvc4 application

+0

非常感谢Yamamoto san,它是IIS中** SystemIdleTime **变量的问题。我请求我的托管服务提供商更改此值,它工作。 我也发现这个很好** [文章](http://aspnetfaq.com/iis7-application-pool-idle-time-out-settings/)** – Sujoy