1

我們有一個ASP.Net MVC Web應用程序,可在30分鐘後保持超時。IIS 7.5會話在30分鐘時間內超時,無論其他設置如何

在web.config中,我將sessionState超時值設置爲500分鐘。 30分鐘後,會話仍然超時。所以,我把它設置爲1分鐘,這實際上是有效的。正好1分鐘後會話超時。

然後,添加以下代碼以在session_start在Global.asax.cs中:

Session.Timeout = 500; 

這有效地推翻在web.config 1分鐘超時設置。但是,像發條一樣,會議在30分鐘內仍然超時。

我該如何才能使IIS符合會話超時值?

+0

你確定這是你真正想要的是什麼?應該使用會話來緩存信息,以提高跨請求的性能,但不能長期存儲數據。使用永久性cookie以確保用戶不必重複登錄,並保存其他所有內容,以便在會話丟失時恢復。還可以保護您免受應用程序池回收,iis重新啓動等。 – 2013-04-25 22:30:05

+0

是的。這最終是我們與應用程序一起前進的地方。目前,在這個測試版本中,我們需要這部分才能正常工作。 – crackedcornjimmy 2013-04-25 22:50:33

回答

2

聽起來你的應用程序池在30分鐘後回收,這有效地殺死了IIS中的所有內存會話。

下面是有關應用程序池回收的更多信息,您可以如何控制它並記錄這些事件。

http://www.iis.net/configreference/system.applicationhost/applicationpools/add/recycling

http://forums.asp.net/t/1663248.aspx/1

+0

謝謝。我現在正在嘗試。我已將sessionState設置爲500分鐘,將Global.asax中的Session.Timeout設置爲500分鐘,將應用程序池空閒時間設置爲10分鐘。我預計這會在10分鐘後超時。然後,我會確定它是否超過30分鐘。 – crackedcornjimmy 2013-04-25 22:52:00

+0

我們將在下一版本中移出管理會話中的用戶數據。但這實際上是答案。應用程序池中的空閒時間設置可以延長。正如Morten Mertner在上面評論的那樣,唯一的問題不是應用程序池回收並因此依賴會話的唯一原因是不可靠的。 – crackedcornjimmy 2013-04-26 16:22:27