La deserialización de JSON lanza una referencia circular SOLAMENTE en la construcción en vivo

Tengo un problema extraño que no puedo envolver mi cabeza alrededor. Estoy tratando de crear una función "exportar a csv" para mi aplicación MVC4 donde el JSON relevante se pasa a través de una llamada ajax a mi ActionResult. El ActionResult deserializa el JSON de cadena (con JSON.Net), lo escribe en un archivo en formato csv y luego devuelve la ruta del servidor al nuevo archivo. Mi devolución de llamada exitosa recibe la ruta y llama a la url para descargar.

Esto funciona bien localmente, pero en mi servidor de prueba en vivo obtengo la siguiente excepción:

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

El JSON (y, posteriormente, los objetos para los que se deserializa) son ligeramente complejos. Vienen de un subconjunto agrupado de un SlickGrid DataView. Recibí excepciones de referencia circular cuando incluí la información agregada para los totales de columna (esto solo es relevante para aquellos que están versados ​​en SlickGrid, no creo que los datos que se pasan al servidor sean un problema), pero los he eliminado Antes de pasar el JSON al servidor. Aquí está mi estructura de clase JSON a C #:

[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; }
}

Lo único que pienso es que, debido a la forma en que se estructuran los datos, la Lista <> de filas en el objeto raíz puede lanzar las referencias circulares durante la deserialización porque un grupo no necesariamente tiene referencias de fila únicas.

Mi pregunta es ¿por qué funciona bien localmente? No tengo idea de lo que me estoy perdiendo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta