gpt4 book ai didi

asp.net - Linq to sql 对象是否可序列化 session 状态?

转载 作者:行者123 更新时间:2023-12-02 21:08:47 26 4
gpt4 key购买 nike

无需讨论这是一个好主意还是坏主意:

当 session 进程外时,是否可以在 ASP.NET session 中存储 LINQ-to-SQL 域对象?

[编辑]我目前收到以下错误并提出这个问题,因为我怀疑 LINQ-to-SQL 对象:

无法序列化 session 状态。在“StateServer”和“SQLServer”模式下,ASP.NET 将序列化 session 状态对象,因此不允许使用不可序列化的对象或 MarshalByRef 对象。如果自定义 session 状态存储在“自定义”模式下完成类似的序列化,则适用相同的限制。[/编辑]

例如

Session["Zoo"] = new Zoo() { 
new Lion(),
new Tiger(),
new Elephant()
}

地点:

  • 动物园、狮子、老虎、大象都来自 ZooDataContext

并且 web.config 文件包含

<sessionState
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
stateNetworkTimeout="10"
sqlConnectionString="SqlStateConnectionString"
sqlCommandTimeout="30"
timeout="20"
regenerateExpiredSessionId="true"/>

最佳答案

要使用二进制格式化程序(我相信像 SessionState 使用),您需要自己从 DBML 生成代码(我目前使用 Linq2Sql T4 模板来生成代码)。

以下内容需要标记为[NonSerialized]:

  • EntityRef
  • 实体集
  • 所有事件(您需要跳出框框思考才能做到这一点,供读者练习)

此外,构造函数逻辑需要移至 OnCreated。您还必须确保反序列化时调用 OnCreated ,以便该对象可以再次有用。这是通过[OnDeserializing] 属性完成的。

关于asp.net - Linq to sql 对象是否可序列化 session 状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1643793/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com