我一定对会话有误解。我正在尝试存储一些信息,所以让我提供详细信息。
这是我的“容器”类,它包含一个业务对象列表。此容器存储在会话中。
public class MySessionContainer {
private IList<SomeBusinessObjectType> _BusinessObjectList = new List<SomeBusinessObjectType>();
public IList<SomeBusinessObjectType> BusinessObjectList {
get { return _BusinessObjectList; }
set { _BusinessObjectList = value; }
}
}
我有一组形成向导/多步骤流程的页面,它们都需要访问处于会话中的容器中的业务对象列表。
第一个页面将业务对象添加到会话列表中,因此使用这种代码来实现:
string key = GetKeyForCurrentUser();
MySessionContainer container = (MySessionContainer) Session[key];
SomeBusinessObjectType businessObject = /* Get object from view. */;
container.BusinessObjectList.Add(businessObject);
生成的密钥在所有页面中始终相同。
但是,当用户进入第二页时,容器按预期处于会话状态,但业务对象列表为空,这不是我所期望的。如果第一页添加了一个业务对象,那么它应该存在于第二页和后续页面......对吗?
关于 ASP.net 中的会话,我有什么不明白的地方吗?为什么容器在会话中而不是列表?当 ASP.net 从会话中写入/读取列表时,列表是否没有与容器对象序列化?