XmlSerialization is failing due to a circular reference.

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Jeremy Kitchen

    XmlSerialization is failing due to a circular reference.

    I have inherited a project and I am trying to figure out why the
    failing units tests that exist fail. I a, getting the following error
    when I attempt serialization.

    Any advice on what I should do to find the source of the problem would
    be appreciated.

    Thank you
    Jeremy

    Error 1 TestCase
    'SuccessAssessB usiness.Success AssessBusinessT est.LinkedAsses sments'
    failed: System.InvalidO perationExcepti on : There was an error
    generating the XML document.
    ----System.InvalidO perationExcepti on : A circular reference was
    detected while serializing an object of type
    SuccessAssessBu siness.Manageme ntGroup.
    at System.Xml.Seri alization.XmlSe rializer.Serial ize(XmlWriter
    xmlWriter, Object o, XmlSerializerNa mespaces namespaces, String
    encodingStyle, String id)
    at System.Xml.Seri alization.XmlSe rializer.Serial ize(XmlWriter
    xmlWriter, Object o, XmlSerializerNa mespaces namespaces, String
    encodingStyle)
    at System.Xml.Seri alization.XmlSe rializer.Serial ize(XmlWriter
    xmlWriter, Object o, XmlSerializerNa mespaces namespaces)
    at System.Xml.Seri alization.XmlSe rializer.Serial ize(TextWriter
    textWriter, Object o, XmlSerializerNa mespaces namespaces)
    at System.Xml.Seri alization.XmlSe rializer.Serial ize(TextWriter
    textWriter, Object o)
    at
    SuccessAssessBu siness.SuccessA ssessBusinessTe st.LinkedAssess ments() in
    C:\Inetpub\wwwr oot\SuccessAsse ss\Projects\Suc cessAssess
    \SuccessAssessT est\SuccessAsse ssBusinessTest. cs:line 372
    --InvalidOperatio nException
    at
    System.Xml.Seri alization.XmlSe rializationWrit er.WriteStartEl ement(String
    name, String ns, Object o, Boolean writePrefixed,
    XmlSerializerNa mespaces xmlns)
    at
    Microsoft.Xml.S erialization.Ge neratedAssembly .XmlSerializati onWriterAssessm ent.Write8_Mana gementGroup(Str ing
    n, String ns, ManagementGroup o, Boolean isNullable, Boolean needType)
    at
    Microsoft.Xml.S erialization.Ge neratedAssembly .XmlSerializati onWriterAssessm ent.Write9_Jobs ite(String
    n, String ns, Jobsite o, Boolean isNullable, Boolean needType)
    at
    Microsoft.Xml.S erialization.Ge neratedAssembly .XmlSerializati onWriterAssessm ent.Write8_Mana gementGroup(Str ing
    n, String ns, ManagementGroup o, Boolean isNullable, Boolean needType)
    at
    Microsoft.Xml.S erialization.Ge neratedAssembly .XmlSerializati onWriterAssessm ent.Write9_Jobs ite(String
    n, String ns, Jobsite o, Boolean isNullable, Boolean needType)
    at
    Microsoft.Xml.S erialization.Ge neratedAssembly .XmlSerializati onWriterAssessm ent.Write12_Ass essment(String
    n, String ns, Assessment o, Boolean isNullable, Boolean needType)
    at
    Microsoft.Xml.S erialization.Ge neratedAssembly .XmlSerializati onWriterAssessm ent.Write13_Ass essment(Object
    o) C:\Inetpub\wwwr oot\SuccessAsse ss\Projects\Suc cessAssess
    \SuccessAssessT est\SuccessAsse ssBusinessTest. cs 372

  • Nicholas Paldino [.NET/C# MVP]

    #2
    Re: XmlSerializatio n is failing due to a circular reference.

    Jeremy,

    XML serialization does not support circular references. This means that
    one of the objects that you are trying to serialize holds onto another
    object higher up in the object chain, which in turn causes your circular
    reference. You need to make it so that the object does not reference itself
    (directly or indirectly) and then the problem should go away.


    --
    - Nicholas Paldino [.NET/C# MVP]
    - mvp@spam.guard. caspershouse.co m

    "Jeremy Kitchen" <J.t.Kitchen@gm ail.comwrote in message
    news:1178302946 .478954.243220@ o5g2000hsb.goog legroups.com...
    >I have inherited a project and I am trying to figure out why the
    failing units tests that exist fail. I a, getting the following error
    when I attempt serialization.
    >
    Any advice on what I should do to find the source of the problem would
    be appreciated.
    >
    Thank you
    Jeremy
    >
    Error 1 TestCase
    'SuccessAssessB usiness.Success AssessBusinessT est.LinkedAsses sments'
    failed: System.InvalidO perationExcepti on : There was an error
    generating the XML document.
    ----System.InvalidO perationExcepti on : A circular reference was
    detected while serializing an object of type
    SuccessAssessBu siness.Manageme ntGroup.
    at System.Xml.Seri alization.XmlSe rializer.Serial ize(XmlWriter
    xmlWriter, Object o, XmlSerializerNa mespaces namespaces, String
    encodingStyle, String id)
    at System.Xml.Seri alization.XmlSe rializer.Serial ize(XmlWriter
    xmlWriter, Object o, XmlSerializerNa mespaces namespaces, String
    encodingStyle)
    at System.Xml.Seri alization.XmlSe rializer.Serial ize(XmlWriter
    xmlWriter, Object o, XmlSerializerNa mespaces namespaces)
    at System.Xml.Seri alization.XmlSe rializer.Serial ize(TextWriter
    textWriter, Object o, XmlSerializerNa mespaces namespaces)
    at System.Xml.Seri alization.XmlSe rializer.Serial ize(TextWriter
    textWriter, Object o)
    at
    SuccessAssessBu siness.SuccessA ssessBusinessTe st.LinkedAssess ments() in
    C:\Inetpub\wwwr oot\SuccessAsse ss\Projects\Suc cessAssess
    \SuccessAssessT est\SuccessAsse ssBusinessTest. cs:line 372
    --InvalidOperatio nException
    at
    System.Xml.Seri alization.XmlSe rializationWrit er.WriteStartEl ement(String
    name, String ns, Object o, Boolean writePrefixed,
    XmlSerializerNa mespaces xmlns)
    at
    Microsoft.Xml.S erialization.Ge neratedAssembly .XmlSerializati onWriterAssessm ent.Write8_Mana gementGroup(Str ing
    n, String ns, ManagementGroup o, Boolean isNullable, Boolean needType)
    at
    Microsoft.Xml.S erialization.Ge neratedAssembly .XmlSerializati onWriterAssessm ent.Write9_Jobs ite(String
    n, String ns, Jobsite o, Boolean isNullable, Boolean needType)
    at
    Microsoft.Xml.S erialization.Ge neratedAssembly .XmlSerializati onWriterAssessm ent.Write8_Mana gementGroup(Str ing
    n, String ns, ManagementGroup o, Boolean isNullable, Boolean needType)
    at
    Microsoft.Xml.S erialization.Ge neratedAssembly .XmlSerializati onWriterAssessm ent.Write9_Jobs ite(String
    n, String ns, Jobsite o, Boolean isNullable, Boolean needType)
    at
    Microsoft.Xml.S erialization.Ge neratedAssembly .XmlSerializati onWriterAssessm ent.Write12_Ass essment(String
    n, String ns, Assessment o, Boolean isNullable, Boolean needType)
    at
    Microsoft.Xml.S erialization.Ge neratedAssembly .XmlSerializati onWriterAssessm ent.Write13_Ass essment(Object
    o) C:\Inetpub\wwwr oot\SuccessAsse ss\Projects\Suc cessAssess
    \SuccessAssessT est\SuccessAsse ssBusinessTest. cs 372
    >

    Comment

    • Marc Gravell

      #3
      Re: XmlSerializatio n is failing due to a circular reference.

      A common gotcha when using xml serialization; if your objects have a
      logical parent/child (tree) structure, then the simple fix is to apply
      [XmlIgnore] to any "parent" relationships, so that it is serialized in
      a downwards (only) route. Unfortunately, these relationships will need
      repairing at t'other end. One solution here is custom serialization
      (IXmlSerializab le), but this is probably overkill. Maybe just fixup
      manually after deserializing.

      For reference, note that the DataContractSer ializer (.Net 3.0) can (if
      asked nicely) support both "graph" and "tree" serialization; but of
      course the xml will look different...

      Marc

      Comment

      Working...