2011-08-25 40 views
2

我使用StructureMap存儲會話對象:結構圖HttpSessionLifecycle對象序列化

config.For<SessionContext>().LifecycleIs(new HttpSessionLifecycle()); 

,一切工作正常,所以我可以容易DI檢索會話對象。

但現在我需要將我的會話從進程中切換到數據庫,但我收到以下錯誤。

無法序列化會話狀態。在「StateServer」和 「SQLServer」模式下,ASP.NET將序列化會話狀態對象 ,結果不允許不可序列化的對象或MarshalByRef對象爲 。如果類似序列化 由自定義會話狀態存儲以「自定義」模式完成,則適用相同的限制。 ---> System.Runtime.Serialization.SerializationException:類型 'StructureMap.Pipeline.MainObjectCache'in Assembly'StructureMap, Version = 2.6.2.0,Culture = neutral,PublicKeyToken = e60ad81abae3c223'is 未標記爲可序列化。

我該如何解決這個問題?

+0

爲什麼減號?任何人都能解釋? –

+0

會話中的每個對象都標記爲「[Serializable]」嗎? – Jay

+0

@Jay:是的,我的所有課程都是可序列化的。結構映射中的問題,它以某種方式將會話對象與其無法序列化的類相關聯,請參閱上面的錯誤。 –

回答

3

問題出在StructureMap中。我已將[Serializable]屬性添加到MainObjectCache類和其他一些類中,並對其進行了測試。它現在有效。該修復可在this拉取請求中找到。

我希望@Joshua Flanagan很快就會將這些變化合併到主分支中,問題會最終解決。

編輯:

謝謝,我在你的變化已經拉(和其他幾個人),並推了 2.6.3版本。編輯你的答案,說它是一個在2.6.3和 中修復的錯誤,將其標記爲接受的答案。 - Joshua Flanagan