JSON反序列化仅在实时构建中抛出循环引用

时间:2013-11-12 17:00:55

标签: json asp.net-mvc-4 csv serialization slickgrid

我有一个奇怪的问题,我无法解决这个问题。我正在尝试为我的MVC4应用程序创建一个“export to csv”函数,其中相关的JSON通过ajax调用传递给我的ActionResult。 ActionResult反序列化stringify'd JSON(使用JSON.Net),将其写入csv格式的文件,然后将服务器路径返回到新文件。然后我的成功回调接收路径并调用url进行下载。

这在本地工作正常,但在我的实时测试服务器上,我得到以下异常:

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

JSON(以及随后被反序列化的对象)稍微复杂一些。它们来自SlickGrid DataView的分组子集。当我包含列总计的聚合信息时,我得到了循环引用异常(这只与那些精通SlickGrid的人有关,我不相信传递给服务器的数据是个问题),但是我已经删除了它们在将JSON传递给服务器之前。这是我的JSON到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; }
}

我唯一想到的是,由于数据的结构方式,List&lt;&gt;根对象中的行可能在反序列化期间抛出循环引用,因为组不一定具有唯一的行引用。

我的问题是为什么它在当地运作良好?我不知道我错过了什么。

1 个答案:

答案 0 :(得分:2)

[ScriptIgnore]属性的帮助非常棒。此外,完全可以肯定的是,您的所有URL路径(包括AJAX代码中)都正确解析为应用程序根目录。当其中一些是错误的时候,这是从开发到生产过程中的一个臭名昭着的问题来源。

这听起来不一定是主要问题,但我对您的应用程序的设计一无所知。绝对值得一看。