我需要在会话中保存一些东西。目前,我在我的开发机器上使用 InProc 会话,但我想使用 SQL 服务器会话和 Azure 的 AppFabric 会话进行部署。
我创建了一个包含多个属性的对象,所有这些属性都是原始类型。我正在处理这样的会话读取:
SessionObject TheCurrentSession =
HttpContext.Current.Session["UserAppSession"] as SessionObject;
基本上,我将会话变量包装在一个对象中,该对象在每次会话加载和保存时都会被序列化和反序列化。
我想知道以本机格式存储每个属性并让包装对象在会话中读取/保存其每个属性作为本机类型是否会更好。
例如,我有一个名为 RecreateSession 的方法,如下所示:
public class SessionObject
{
public void RecreateSession()
{
this.SessionObjectProperty1 =
HttpContext.Current.Session["SessionObjectProperty1"];
this.SessionObjectProperty2 = ...;
this.SessionObjectProperty3 = ...;
}
}
我认为这样做会阻止序列化/反序列化过程,并使值可以直接在代码的其他部分(即 HTTP 模块)中访问。
改变我的会话实现是否值得?这方面的最佳做法是什么?
感谢您的建议。