2012-12-31 20 views
2

我想以與其他密鑰不同的方式管理密鑰的時間密度。管理單個密鑰的ASP.NET會話超時

可能嗎?

我的意思是,讓我們考慮兩個會話密鑰:「User」和「RedirectUrl」。我想保留1小時的「User」會話對象和1分鐘的「RedirectUrl」會話對象。

我該如何處理這個問題?

回答

1

我建議只是包裝要在另一個目的是過期的會話值:

[Serializable] 
public class SessionUser 
{ 
    public User User { get; set; } 
    public DateTime Expires { get; set; } 
} 

[Serializable] 
public class SessionRedirectUrl 
{ 
    public Uri RedirectUrl { get; set; } 
    public DateTime Expires { get; set; } 
} 

如果有對到期就需要邏輯反正檢查有效期限每個會話價值的機制。

但是,正如Icarus所述,您所描述的功能可能是緩存而不是會話關注點。

+0

是的,我不需要達到會議表現。我想我會在檢索包裝對象後添加自己的邏輯,謝謝 –

0

開箱即用,無法以您想要的方式使用Session類。你必須爲此使用你自己的解決方案。

Cache確實有一種機制,允許您在一段時間後過期特定對象,但由於Cache在所有會話中共享,因此可能不適合您的方案。

如果您仍然可以使用緩存來執行此操作,但您仍然可以區分不同用戶(例如,將用戶ID添加到每個密鑰),但仍然必須爲該密鑰添加某種唯一標識符想想這種方法的可擴展性。