在json字符串中序列化会话对象

本文关键字:会话 对象 序列化 json 字符串 | 更新日期: 2023-09-27 18:00:02

我构建了一个强类型会话对象,如下所示:

class MySession
{
  public string UsedID {get;set;}
  public List<int> ListOfInt {get;set;}
  public List<string ListOfString {get;set;}
  .....
}

我目前正在使用InProc会话,所以当页面加载时,我会写:

MySession TheSession = Session["UserSession"] as MySession;

然后在稍后的代码中,我可以使用CCD_ 1语法访问每个属性。

这确实很酷,但我认为将会话存储在DB中可能会更好。

我正在考虑将MySession对象序列化为json字符串,并将该字符串存储在DB中,以便在加载页面时检索和反序列化。

这是个好方法吗?

谢谢你的建议。

在json字符串中序列化会话对象

首先确保您需要Session中的所有数据。我感觉您需要创建数据库表并将数据存储在表中。

如果您确定需要Session,那么使用标准<sessionState mode="SQLServer">是有意义的。您可以在此处阅读有关会话状态模式的更多信息。

如果您确定要自定义序列化,那么使用二进制序列化而不是JSON是有意义的。它将需要更少的内存来存储,并且需要更少的资源来序列化/反序列化。

ASP。NET会话状态服务器与InProc会话介绍了使用状态服务器或进程内会话存储的优缺点。

至于使用JSON,它肯定比XML更轻,也同样灵活——至少对于您的目的来说是这样。我认为没有理由不这么做。