您如何最好地存储从登录到注销必须持久的 ID

How do you best store a ID that has to persistent from login to logout

让我们说从用户登录(声明)到用户手动或通过会话超时注销的 ID 的最佳方法是什么?我尝试使用静态 class 但它被处理掉了,因此我的属性为空。

HttpContext.Current.Session 是可行的解决方案吗?这样我基本上可以在用户登录时执行此操作:

HttpContext.Current.Session["MyCustomID"] = somevalue;

并且当用户注销时:

HttpContext.Current.Session["MyCustomID"] = null;

我找到了将其存储在数据库中的最佳解决方案,这样您就可以始终将其与原始会话 UID 匹配。它还可以帮助我记录与每个会话相关的内容。缺点是速度,当您有很多访问者时它会变得更加棘手,因此您希望将数据量 reads/writes 保持在最低限度。

您还可以模仿其他服务器的解决方案,即将其写入临时文件并再次管理并将 I/O 限制为最小值。不过我更喜欢数据库解决方案。

归根结底,会话可能由于多种原因而丢失(即:服务器重启、应用程序重新编译、会话超时、应用程序池刷新等),因此将其保存在内存中总是容易受到影响无论使用哪个对象都会丢失,即:HttpContext.Current.Session(会话状态),单例 class 具有当前会话的大字典,静态 class 等