我有一个奇怪的问题,我无法解决这个问题。我正在尝试为我的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;根对象中的行可能在反序列化期间抛出循环引用,因为组不一定具有唯一的行引用。
我的问题是为什么它在当地运作良好?我不知道我错过了什么。
答案 0 :(得分:2)
[ScriptIgnore]
属性的帮助非常棒。此外,完全可以肯定的是,您的所有URL路径(包括AJAX代码中)都正确解析为应用程序根目录。当其中一些是错误的时候,这是从开发到生产过程中的一个臭名昭着的问题来源。
这听起来不一定是主要问题,但我对您的应用程序的设计一无所知。绝对值得一看。