动作法末尾的不定式循环

本文关键字:不定式 循环 | 更新日期: 2023-09-27 18:25:33

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

解决方案

正如所注意到的@mreyeros和@LastCoder自我引用可能是这种行为的原因。我仔细检查了我的模型,发现了这个地方:

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

其中CollegeEstimateModel包含上述属性

我添加了[ScriptIgnore]属性,所有属性都正常。

动作法末尾的不定式循环

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