而不去探讨这是好主意还是坏主意:
当会话是out-of-process 时,可以在ASP.NET会话中存储LINQ域对象吗?
编辑我目前收到了以下错误,并问了这个问题,因为我怀疑LINQ对象:
无法序列化会话状态。在“StateServer”和“SQLServer”模式下,ASP.NET将序列化会话状态对象,因此不允许非序列化对象或MarshalByRef对象。如果自定义会话状态存储在“自定义”模式下执行类似的序列化,则同样的限制也适用。/EDIT
例如:
Session["Zoo"] = new Zoo() {
new Lion(),
new Tiger(),
new Elephant()
}其中:
而web.config文件包含
<sessionState
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
stateNetworkTimeout="10"
sqlConnectionString="SqlStateConnectionString"
sqlCommandTimeout="30"
timeout="20"
regenerateExpiredSessionId="true"/>发布于 2009-10-29 15:57:39
在存储在会话中或任何其他可能要序列化的内容之前,使用Dataacontract序列化程序序列化它们.最近在这里讨论
http://social.msdn.microsoft.com/Forums/en-US/linqtosql/thread/81c84ff4-059b-474f-9c69-b8c59027fd48
发布于 2009-10-29 16:02:16
要使用二进制格式化程序(如SessionState使用,我相信),您需要自己从DBML生成代码(我目前使用的是Linq2Sql T4模板)。
以下需要标记为[NonSerialized]
EntityRefEntitySet此外,构造函数逻辑需要移动到OnCreated。您还必须确保在反序列化时调用OnCreated,以便该对象可以再次使用。这是用[OnDeserializing]属性完成的。
发布于 2009-10-29 13:45:10
我相信您需要将对象标记为可串行化。我不确定是否有办法对所有生成的对象这样做,但是对于要放入会话的对象,您可以创建一个部分类(例如Lion),并给它提供Serializable属性。
https://stackoverflow.com/questions/1643793
复制相似问题