2015-08-08 23 views
0

我正在開發MVC5應用程序。 我已經使用會話來存儲用戶數據。會話在MVC應用程序中經常過期

下面是我使用的存儲會話數據

if (Session["UserData"] == null) 
{ 
    Session["UserData"] = _objLoginSession; 
} 

我也增加了會話超時在web.config中,這是如下

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

我的身份驗證模式也代碼none

<authentication mode="None" /> 

但是當我運行我的應用程序時,它僅在1-2分鐘內過期。

任何人都可以請指導我嗎?

回答

2

原因之一,ASP.NET會話可能到期想到的是這樣的:會話,因爲你指定的是InProc模式數據保存在內存中,所以如果你在Visual Studio或由於某種原因,重新編譯應用程序的應用程序重新啓動你將失去會話數據。 Web服務器可能會重啓應用程序的原因很多。諸如更改web.config或bin文件夾中的某些文件或您的計算機開始在低內存上運行。

所有這些原因表明,絕對不應該(除開發之外)將會話數據保存在內存(InProc)中。

+0

那麼應該做些什麼來克服呢? – User5590

+0

建議的方式是什麼? – User5590

+1

切勿在生產中使用InProc,並在開發過程中記住,如果重新編譯應用程序,將會丟失數據。如果要通過應用程序重新啓動保留會話數據,也可以切換到正在開發中的某個持久會話存儲。甚至更好:根本不使用任何會話。設計您的應用程序,使其完全無狀態。我一直認爲ASP.NET會話是不必要的惡果。 –

相關問題