代码之家  ›  专栏  ›  技术社区  ›  ksa

在保持工作流时接收PersistenceException

  •  1
  • ksa  · 技术社区  · 15 年前

    以下是我在持久化工作流时获取的异常的堆栈跟踪:

    System.Workflow.Runtime.Hosting.PersistenceException: Type 'System.Xml.XmlElement' in Assembly 'System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable. ---> System.Runtime.Serialization.SerializationException: Type 'System.Xml.XmlElement' in Assembly 'System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable.
       at System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(RuntimeType type)
       at System.Runtime.Serialization.FormatterServices.GetSerializableMembers(Type type, StreamingContext context)
       at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo()
       at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter)
       at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter)
       at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck)
       at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean fCheck)
       at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph)
       at System.Workflow.ComponentModel.Activity.Save(Stream stream, IFormatter formatter)
       at System.Workflow.ComponentModel.Activity.Save(Stream stream)
       at System.Workflow.Runtime.Hosting.WorkflowPersistenceService.GetDefaultSerializedForm(Activity activity)
       at System.Workflow.Runtime.Hosting.SqlWorkflowPersistenceService.SaveWorkflowInstanceState(Activity rootActivity, Boolean unlock)
       at System.Workflow.Runtime.WorkflowExecutor.Persist(Activity dynamicActivity, Boolean unlock, Boolean needsCompensation)
       --- End of inner exception stack trace ---
       at System.Workflow.Runtime.WorkflowExecutor.Persist(Activity dynamicActivity, Boolean unlock, Boolean needsCompensation)
       at System.Workflow.Runtime.WorkflowExecutor.ProtectedPersist(Boolean unlock)
    

    如何在何处调试此异常?

    1 回复  |  直到 13 年前
        1
  •  2
  •   Maurice    15 年前

    错误消息在顶部显示:

    程序集中的“system.xml.xmlElement” 'system.xml,版本=2.0.0.0, 文化=中性, publickeytoken=b7a5c561934e089'是 未标记为可序列化。

    当工作流被持久化时,WorkflowPersistenceService使用二进制序列化程序来转储工作流中的所有数据。因此,其中的所有内容必须要么标记为不可序列化,要么必须是二进制可序列化。xmlElement不是这样的,所以您必须以其他方式存储数据,或者根本不保存数据。

    推荐文章