我有清除所有會話變量在這樣的Page_Load方法ASP.NET默認頁面:在ASP.NET中刪除會話變量年長15分鐘內
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Session.RemoveAll();
}
}
,但我想刪除會話變量只有年長在page_load方法中超過十五分鐘。
我該如何刪除舊的會話變量?
我有清除所有會話變量在這樣的Page_Load方法ASP.NET默認頁面:在ASP.NET中刪除會話變量年長15分鐘內
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Session.RemoveAll();
}
}
,但我想刪除會話變量只有年長在page_load方法中超過十五分鐘。
我該如何刪除舊的會話變量?
除非您有充分的理由手動執行(您似乎沒有),否則應該將會話過期保留給框架。您可以相應地調整SessionState.Timeout屬性,以便您的會話在15分鐘後過期(默認值爲20分鐘),例如
<configuration>
<system.web>
<sessionState timeout="15" />
</system.web>
</configuration>
我所做的是創建自定義對象,存儲我想要保留的實際數據以及時間戳。這樣,您就不會改變默認的會話行爲,並且可以讓不同的對象以不同的時間間隔到期。
然後,當我執行某些操作時,查看此對象,測量其當前時間的時間戳,並在符合我的時間差的情況下清除該對象。
Class mycustomobject
Property thisObject as object '<- store your object you want to keep here,
'even define as type of your specific object...
Property timestamp as datetime
End class
Dim MySessionSaveObject as new mycustomobject
with MySessionSaveObject
.object = 'Whatever you want to save...
.timestamp = now
end with
session(mySessionVar) = MySessionSaveObject
我想你可以確定其餘的嗎?
你可以做些什麼讓個別項目自動失效是(錯誤)使用內置的超時時間緩存。使用您固定的「會話」密鑰加上當前SessionId的緩存鍵。然後,您還可以指定20分鐘的滑動超時。
所以不是
Session["MyKey"] = value;
您使用
Cache.Insert("MyKey" + Session.SessionID, value, null,
TimeSpan.FromMinutes(20), Cache.NoAbsoluteExpiration);
這很酷!必須在某個時候嘗試。 –
恕我直言會話默認情況下,15分鐘後復位。 –
@RoyiNamir在ASP.NET中默認爲[20分鐘](http://msdn.microsoft.com/zh-cn/library/system.web.sessionstate.httpsessionstate.timeout(v = vs.110).aspx) 。 – James
這些是空閒超時值;我認爲OP想要在超時結束時刪除未使用的變量 – NoviceProgrammer