我正在实现一个会话结构。
我有一个ConcurrentDictionary
服务器端持有所有<SessionId, UserSession>
对。
当建立新连接时,cookie 将分配给客户端浏览器,perm 或 temp 取决于RememberMe
选项。
当客户端调用该LogOut
函数时,它会从字典中删除会话。
但是,当客户端浏览器简单地关闭或崩溃,cookie 丢失或过期或删除时,内存中的服务器端会话对象仍保留在字典中并成为幽灵。随着时间的推移,这些幽灵会堆积起来。
我的问题是,如何改进设计,以便在过期后可以清理死会话?
我想过做一个定时服务来运行清洁计划,但感觉并不优雅。有没有更简单的方法可以在不依赖外部服务的情况下做到这一点?