我必須誤會會話的某些內容。我試圖存儲一些信息,所以讓我提供詳細信息。訪問存儲在會話中的對象的屬性
這是我的「容器」類,它包含一個業務對象列表。該容器存儲在會話中。
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從會話寫入/讀取時,該列表是否與容器對象串行化?
您是否嘗試過在修改它之後將它填充到會話中? – JerKimball
@JerKimball我曾經想過,但我認爲在一個請求中,session中的值始終是相同的參考。 – kevin628
我不得不檢查一些東西(遠離asp.net一段時間),但我的預感是你得到了一個反序列化的訪問副本,而不是原始參考。 – JerKimball