c# – 如何处理会话保持打开状态

前端之家收集整理的这篇文章主要介绍了c# – 如何处理会话保持打开状态前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在实现一个会话结构.

我在服务器端有一个ConcurrentDictionary,持有所有< SessionId,UserSession>对.

建立新连接时,会根据RememberMe选项将cookie分配给客户端浏览器,perm或temp.

当客户端调用logout函数时,它会从字典中删除会话.

但是,当客户端浏览器被简单地关闭或崩溃,并且cookie丢失或过期或删除时,内存中的服务器端会话对象将保留在字典中并变为重影.随着时间的推移,这些鬼魂会堆积起来.

我的问题是,如何改进设计,以便在死亡会话过期后将其清理干净?

我想过让计时器服务运行一个清洁计划,但感觉不优雅.有没有更简单的方法来做到这一点,而不依赖于外部服务?

解决方法

我的一个项目有类似的情况.

而不是字典,我使用短暂的绝对过期缓存和用户的会话ID作为我的缓存键:

HttpContext.Current.Cache.Insert(sessionID,userEntity,null,DateTime.Now.AddSeconds(30),TimeSpan.Zero);

在客户端,我每隔15秒进行一次ajax调用,通知服务器并更新该会话ID的缓存.

因此,每当用户关闭其浏览器窗口时,服务器都不会收到任何通知用户的会话ID自动过期.

原文链接:https://www.f2er.com/csharp/244624.html

猜你在找的C#相关文章