C# 在会话或备用解决方案中存储linq到sql对象
我正在会话状态服务器上存储会话。(将其存储在PROC中不起作用。) 我试图使用visual studio(2010)中内置的linq to sql设计器生成的类来存储和表示网站中的一些数据 在某些情况下,我希望将其中一些对象放入会话中,以便能够在另一个网页上访问它们 问题是,当我这样做时,我得到一个错误,linq到sql的某些部分是不可序列化的 我已经将我的datacontext“序列化模式”设置为“单向”,不管这意味着什么 然后,我创建了一些能够更好地进行序列化的替代对象,用包含一些xml的基本字符串替换一些转换为linq.xelement字段的sql xmldata字段。然后,对象仅包含基本类型 仍然是错误 然后,我尝试使用DataContractJsonSerializer获取一个字节[],我可以将其放入会话中:C# 在会话或备用解决方案中存储linq到sql对象,c#,asp.net,linq-to-sql,session-state,datacontractserializer,C#,Asp.net,Linq To Sql,Session State,Datacontractserializer,我正在会话状态服务器上存储会话。(将其存储在PROC中不起作用。) 我试图使用visual studio(2010)中内置的linq to sql设计器生成的类来存储和表示网站中的一些数据 在某些情况下,我希望将其中一些对象放入会话中,以便能够在另一个网页上访问它们 问题是,当我这样做时,我得到一个错误,linq到sql的某些部分是不可序列化的 我已经将我的datacontext“序列化模式”设置为“单向”,不管这意味着什么 然后,我创建了一些能够更好地进行序列化的替代对象,用包含一些xml的基
byte[] buf = null;
var ds = new DataContractJsonSerializer(fi.GetType());
using (var ms = new MemoryStream())
{
using (var w = JsonReaderWriterFactory.CreateJsonWriter(ms))
{
ds.WriteObject(w, fi);
ms3.Position = 0;
buf = ms.ToArray();
}
}
return buf;
这里的问题是JSON字符串似乎在某个元素的中间被截断,因此以后不能被反序列化。当我尝试使用XmlWriter时,我遇到了一个问题,因为某种原因,它将大约43000字节的xml文本切掉
这是相当混乱的 一定有更好的办法 我得到的一个想法是简单地将对象提交到某个临时sql server表,从sql server行获取guid,将guid存储在会话中而不是整个对象集中,然后在另一个页面上从sql server重新读取数据有什么更好的解决方案真正有效?在读取MemoryStream之前,尝试刷新JsonWriter:
...
ds.WriteObject(w, fi);
w.Flush();
ms3.Position = 0;
buf = ms.ToArray();
...