我想以不同的方式管理密钥的超时时间。
有可能吗?
我的意思是,让我们考虑两个会话密钥:“User
”和“RedirectUrl
”。我想将“User
”会话对象保留1小时,将“RedirectUrl
”会话对象保留1分钟。
我如何处理这个问题?
答案 0 :(得分:1)
我建议只包装你想要在另一个对象中过期的Session值:
[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所说,您描述的功能可能是缓存而不是会话问题。
答案 1 :(得分:0)
开箱即用,无法以您想要的方式使用Session类。你必须使用自己的解决方案。
Cache
确实有一种机制允许您在一定时间后使特定对象过期,但它可能不适合您的场景,因为Cache
在所有会话中共享。
如果您以某种方式为密钥添加某种唯一标识符(仍然可以将用户ID添加到每个密钥之前),您仍然可以使用缓存来执行此操作,但是您仍然需要思考关于这种方法的可扩展性。