Bei der JSON-Deserialisierung wird NUR im Live-Build ein Zirkelverweis ausgegeben

Ich habe ein seltsames Problem, bei dem ich meinen Kopf nicht hängen kann. Ich versuche, eine "Export to CSV" -Funktion für meine MVC4-Anwendung zu erstellen, bei der der entsprechende JSON-Code über einen Ajax-Aufruf an mein ActionResult übergeben wird. Das ActionResult deserialisiert den JSON-String (mit JSON.Net), schreibt ihn in eine Datei im CSV-Format und gibt dann den Serverpfad zur neuen Datei zurück. Mein Erfolgsrückruf erhält dann den Pfad und ruft die URL zum Herunterladen auf.

Dies funktioniert zwar lokal einwandfrei, auf meinem Live-Testserver wird jedoch die folgende Ausnahme angezeigt:

A circular reference was detected while serializing an object of type 'System.Reflection.RuntimeModule'.

Das JSON (und anschließend die Objekte, für die sie deserialisiert werden) sind etwas komplex. Sie stammen aus einer gruppierten Teilmenge einer SlickGrid-Datenansicht. Ich habe Ausnahmen für Zirkelverweise erhalten, als ich die aggregierten Informationen für die Spaltensummen einfügte (dies ist nur für diejenigen relevant, die mit SlickGrid vertraut sind. Ich glaube nicht, dass die an den Server weitergegebenen Daten ein Problem darstellen), aber ich habe sie entfernt bevor Sie den JSON an den Server übergeben. Hier ist meine JSON-zu-C # -Klassenstruktur:

[Serializable]
public class Row
{
    public int id { get; set; }
    public DateTime DateCreated { get; set; }
    public int RefNo { get; set; }
    public string ClientName { get; set; }
    public string Plate { get; set; }
    public string Address1 { get; set; }
    public int? ProductID { get; set; }
    public string Product { get; set; }
    public string S1 { get; set; }
    public string S2 { get; set; }
}

[Serializable]
public class RootReportObject
{
    public bool __group { get; set; }
    public int level { get; set; }
    public int count { get; set; }
    public string value { get; set; }
    public string title { get; set; }
    public int collapsed { get; set; }
    public List<Row> rows { get; set; }
    public object groups { get; set; }
    public string groupingKey { get; set; }
}

Das einzige, was ich denke, ist, dass die Liste <> der Zeilen im Stammobjekt aufgrund der Art und Weise, wie die Daten strukturiert sind, möglicherweise die Zirkelverweise während der Deserialisierung auslöst, da eine Gruppe nicht unbedingt eindeutige Zeilenverweise hat.

Meine Frage ist, warum es vor Ort gut funktioniert? Ich habe keine Ahnung, was mir fehlt.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage