[英]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.