簡體   English   中英

如何防止會話超時

[英]How to prevent session timeout

我知道這對你們大多數人來說可能是一個簡單的問題。 但我的問題是我的服務器主機每分鍾都清空他們的會話池。 那么如何讓我的用戶保持登錄狀態超過一分鍾呢?

我聽說我可以使用 SessionStates,但是我沒有在網上找到任何對像我這樣的新手來說易於使用的指南。

我也聽說過用 cookie 來做這件事。 如何?

我正在使用 C# 和 .Net

這是一種方法:

http://weblogs.asp.net/stevewellens/archive/2009/06/09/ah-ah-ah-ah-staying-alive-staying-alive.aspx

有時您希望您的網頁“保持活力”。 也就是說,如果用戶正在填寫復雜的表單,您不希望會話在他們完成之前超時。 用戶可能會非常生氣,這是理所當然的:你甚至可能會被罵!

這不僅僅是將會話超時增加到一個非常大的值的問題。 如果這樣做,會話將在服務器內存中保持活動狀態數小時——在訪問者離開站點之后很久。 增加會話超時是一個解決方案……但不一定是一個好的解決方案。

目標是只要網頁在客戶端機器上打開,會話就應該保持活動狀態……即使沒有回發來重置會話計時器。 當網頁關閉時,會話應該正常超時。

我為此實現了一個解決方案:客戶端將以小於會話超時的間隔“ping”服務器,這將重置會話計時器。 這被稱為心跳設計模式(我找不到一個像樣的站點/頁面來鏈接)......

我們使用 SQL Server 來保存會話狀態。 http://idunno.org/articles/277.aspx

這具有在服務器場中工作的額外優勢。

這些文章也將對您有所幫助:

http://msdn.microsoft.com/en-us/library/ms178586.aspx

http://support.microsoft.com/kb/317604

對於真正易於關注的視頻,請嘗試以下搜索: http ://www.bing.com/videos/search?q=asp.net+session+state+&go=&qs=n&sk=&sc=2-19&form=QBVR #

您不需要延長空閑超時的超時時間。 即使您設置了它,會話也會在 20 到 30 分鍾后結束。 所以我建議以下解決方案。 這個對我有用。

public void ConfigureServices(IServiceCollection services)
    {
         services.Configure<SecurityStampValidatorOptions>(o => o.ValidationInterval = TimeSpan.FromMinutes(720));
}

我用了 720 分鍾超時。 你可以使用你想要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM