我构建了一个强类型会话对象,如下所示:
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;
然后在代码中我可以使用TheSession.XYZ
语法访问每个属性。
这真的很酷,但我认为将会话存储在数据库中可能会更好。
我正在考虑在json字符串中序列化MySession对象,并将字符串存储在我可以在页面加载时检索和反序列化的数据库中。
这是一个很好的方法吗?
感谢您的建议。
答案 0 :(得分:0)
ASP.NET Session State Server vs. InProc Session涵盖了使用状态服务器或进程内会话存储的优缺点。
至于使用JSON,它肯定比XML更轻量级,而且非常灵活 - 至少对于你的目的而言。我认为没有理由不参与其中。
答案 1 :(得分:0)
首先确保您需要Session中的所有数据。我觉得您需要创建数据库表并在表中存储数据。
如果您确定需要Session,那么使用标准<sessionState mode="SQLServer">
是有意义的。您可以阅读有关Session-State Modes here的更多信息。
如果您确定要自定义序列化,那么使用二进制序列化而不是JSON是有意义的。它需要更少的内存来存储,并且需要更少的资源来序列化/反序列化。