动作方法结束时的不定式循环

时间:2013-07-29 17:12:04

标签: c# asp.net-mvc iis infinite-loop

最近我遇到了一个非常奇怪的问题。我的Action方法必须返回JsonResult,一切都很好,直到返回之前的最后一个断点(此时我有正确的json结果)。然后在浏览器控制台中我看到错误500(内部服务器错误)。调试器中没有异常。当我用F10开始调试调试器中的每一步,F11我注意到了一些奇怪的事情。意外的不定式调用我的模型属性(有时是模型属性,有时是不定式调用函数然后模拟属性)。我认为这个不定式循环引发了错误(但是我仍然误解为什么我在调试器中看不到它 - 也许这是IIS调试的一个方面。。代码没有弱点(我不显示它因为它需要的空间不止一些)。我知道我的问题不是stackoverflow terminalogy中的建设性,但我希望有人遇到同样的问题。我只需要一些想法。谢谢。

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

    private IEnumerable<CollegeEstimateModel> _initialModels;

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

其中CollegeEstimateModel包含以上属性

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

1 个答案:

答案 0 :(得分:1)

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