1

最近我遇到了一个非常奇怪的问题。我的 Action 方法必须返回 JsonResult,并且一切都很好,直到返回前的最后一个断点(此时我有正确的 json 结果)。然后在浏览器控制台中我看到错误 500(内部服务器错误)。调试器中没有异常。当我开始使用 F10,F11 检查调试器中的每一步我注意到一些奇怪的事情。意外的不定式调用我的模型属性(有时是对属性进行建模,有时是不定式调用函数,然后是对 proerties 建模)。我认为这个不定式循环引发了错误(但是我仍然误解为什么我在调试器中看不到它——也许这是 IIS 调试的一个方面)。代码没有弱点(我没有展示它,因为它会占用更多的空间)。

解决方案

正如注意到@mreyeros 和@LastCoder 自引用可能是这种行为的原因。我已经详细检查了我的模型并找到了这个地方:

    private IEnumerable<CollegeEstimateModel> _initialModels;

    public IEnumerable<CollegeEstimateModel> InitialModels
    {
        get { return _initialModels = _initialModels ?? CreateInitialModelsList(); }
    }

其中 CollegeEstimateModel 包含上述属性

我添加了 [ScriptIgnore] 属性,一切都正常了。

4

1 回答 1

1

您应该首先检查您尝试序列化为 JSON 结果的模型是否不包含具有自引用属性的属性。例如,您有一个包含详细信息集合的 Order 对象。详细记录具有备份到父订单的导航属性,因此在订单对象的序列化期间导致循环。当然这只是一个猜测,但希望它有所帮助

于 2013-07-29T17:19:44.710 回答