2015-05-05 28 views
0

我們是否可以在global.asax文件的Session_End事件中重新填充像用戶信息,ID等會話,而不是將用戶重定向到登錄頁面,以便用戶不必再次登錄?我們可以在全局文件的Session_End事件中重新填充會話嗎?

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

+0

其實我對.net 的具體感謝方式 – ShazebAli

+0

說「ASP.NET」暗示「.NET」。 –

回答

2

Session_End表示會話已過期。默認會話時間爲20分鐘。會話也有滑動到期。因此,如果用戶在20分鐘內不會做任何請求,則該會話將會過期,並且將調用Session_End事件。

如果您需要更大的會話超時,可以增加它在web.config中一樣:

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

但在Session_End事件重新填充會議對我來說沒有太大的意義,因爲反正用戶不上現場至少20分鐘。無論如何,每個會話都將過期,因爲服務器需要釋放不活動會話使用的內存以處理新會話,並且不會浪費舊內存。

0

有很多方法可以處理這個問題。當Session_End發生時 - 會話結束。我在所有頁面(或主頁面)的頂部都有代碼,用於檢查會話是否已經結束。我傾向於對用戶執行諸如存儲2個GUID之類的操作,並在用戶登錄時返回它們。我將一個cookie粘貼到用戶的盒子中,另一個粘貼在隱藏字段中(同樣,最好在母版頁或用戶控件中出現在每一頁上)。如果會話超時,我從cookie中檢索一個GUID,另一個來自隱藏字段,並使用它們兩者返回數據庫,檢索用戶的詳細信息並重新填充會話。

在用戶全天登錄的站點上 - 每15分鐘使用javascript刷新一次會話。成千上萬的用戶在一個相當低端的服務器環境中 - 從來沒有遇到任何問題。

相關問題