2009-11-12 164 views
5

我的項目有問題。我的網站上有一個管理面板。人們可以使用用戶名和密碼登錄編輯網站內容。有時用戶最多可能需要30-40分鐘才能輸入內容,但會話超時僅在20分鐘後過期。如何將會話超時設置超過20分鐘?

我試圖在web.config配置這一點,例如:

<authentication mode="Windows"/> 
<sessionState timeout="60" /> 

像這樣:

<system.web> 
    <sessionState timeout="60"></sessionState> 
</system.web> 

,並試圖在我的形式,這樣的:

if (ds.Tables["LOG"].Rows.Count > 0)   
{ 
    Session["IsLoggedIn"] = "true";   
    Session.Timeout = 60;    
    Response.Redirect("Default.aspx");  
}   
else  
{     
    Label1.Text = "Username/Password is wrong!!";  
} 

上述解決方案都沒有奏效。我嘗試了每個單獨和一起,但會議20分鐘後仍然過期。

+0

不是真的與你的問題,但你應該考慮失敗的登錄一個更好的錯誤消息。 – Brandon 2009-11-12 22:46:14

+0

你應該修復你的應用程序,以便任何超時無關緊要 - 用戶提交他們的內容,被要求重新登錄,並且他們的內容不會丟失。如果你打算使用超時時間,只要你做出來就會有人擊中它們。 – RichieHindle 2009-11-12 22:47:15

+0

我在土耳其語寫了更好的錯誤信息,布蘭登,別擔心:) – 2009-11-12 22:48:16

回答

12

另一個提示是看看你的IIS設置。當我不得不改變我的超時時間時,我也必須進行一些服務器端更改。檢查應用程序池的Idle Time-out設置。如果網站空閒(我認爲默認爲5分鐘),那麼應用程序池將關閉以節省服務器資源。這也會殺死一個會話。

嘗試增加應用程序池的空閒超時時間,以查看這是否有幫助。

IIS»目錄»配置»選項 和 程序池»屬性

顯然,如果你是在一個共享的託管環境中,您將最有可能無法調整此。

+0

不幸的是我在一個共享的託管Qubar。 – 2009-11-12 22:52:40

+1

當我遇到這種情況時,似乎IIS會話超時總是勝過web.config中定義的內容。我們必須將IIS升到60分鐘。嘗試與您的共享提供商合作,找出他們爲會話超時設置的內容,以及是否有任何可以解決的問題。 – BStruthers 2009-11-12 23:13:33

+0

非常感謝! – Arpita 2015-12-30 09:23:44

1

你確定會超時嗎?它也可能是由您的身份驗證超時導致的(即,身份驗證Cookie設置爲在20分鐘後過期)。確保會話超時和身份驗證超時都設置爲相同的值。

5

當您使用默認會話狀態模式「InProc」(In Process)時,會話狀態數據非常脆弱,每當AppPool回收時都會丟失。

考慮使用其他內置會話狀態模式,這些狀態模式在流程外運行,因此不受AppPool回收的影響。這些是「StateServer」模式(在單獨的進程中在內存中運行)和「SqlServer」模式(存儲在SQL Server DB中的狀態數據)。

您將希望使用這些進程外會話狀態模式之一,以便爲您的會話數據提供更強大的健壯性,尤其是在需要更長的會話超時時。這並不能回答你爲什麼會話過早超時的問題,但它將成爲解決方案的一部分。

各種會話狀態模式在健壯性,內存要求,可伸縮性和性能方面都各有優缺點,所以您需要熟悉它們以便爲您的應用程序找出正確的選擇。

作爲一個便箋,請始終考慮您的數據是否需要進入會話。如果數據量不是太多,在同一頁面上的回發之間需要數據時,通常更好使用ViewState。完全可以開發完全不使用Session的ASP.NET應用程序,或者非常謹慎地使用它,而且當你不使用Session時,通常我會發現事情更直觀。瀏覽器後退按鈕。你的數據庫在那裏堅持你的數據,所以不要害怕使用它。如果您使用Session在頁面之間傳遞表或數據集,請考慮您是否確實需要。您可以通過查詢字符串傳遞參數,然後使用這些參數在請求頁面時從數據庫獲取數據嗎?

參見:MSDN Session State Modes

+0

THANK YOUU !!!!!!無意中看到這個評論查找完全不同的東西,有「InProc」介紹的問題,但從未想出如何解決它們。再次感謝,好評! – 2015-02-27 15:44:14