我试图在会话中存储一些对象(使用StateServer),但是我收到错误"System.Web.HttpException:无法序列化会话状态.在'StateServer'和'SQLServer'模式下"
我知道错误信息的含义,但我无法理解为什么.我使用的所有类都标记为Serializable,我可以使用以下命令对对象进行序列化和反序列化:
System.IO.StringReader stringReader = new System.IO.StringReader(xml);
System.Xml.XmlTextReader xmlTextReader = new System.Xml.XmlTextReader(stringReader);
System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(Parts));
Parts obj = ((Parts)(xmlSerializer.Deserialize(xmlTextReader)));
Run Code Online (Sandbox Code Playgroud)
这有效,并将使用以下序列化:
System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(this.GetType());
System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();
xmlSerializer.Serialize(memoryStream, this);
memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
System.IO.StreamReader streamReader = new System.IO.StreamReader(memoryStream);
return streamReader.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)
但是在尝试将其存储在Session中时会抛出错误.
有没有人有任何想法可能导致这种行为?
编辑:
我刚刚发现这一行导致了错误(删除了所有内容并重新包含它)
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("RecordReference", typeof(RecordReference), Form = System.Xml.Schema.XmlSchemaForm.Unqualified, Order = 0)]
[System.Xml.Serialization.XmlElementAttribute("PartContainer", typeof(PartContainer), Form = System.Xml.Schema.XmlSchemaForm.Unqualified, Order = 0)]
public object Item
{
get
{
return this.itemField;
}
set
{
this.itemField = value;
} …Run Code Online (Sandbox Code Playgroud)