2016-10-05 75 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