Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动作结束不定式循环法_C#_Asp.net Mvc_Iis_Infinite Loop - Fatal编程技术网

C# 动作结束不定式循环法

C# 动作结束不定式循环法,c#,asp.net-mvc,iis,infinite-loop,C#,Asp.net Mvc,Iis,Infinite Loop,最近我遇到了一个非常奇怪的问题。我的Action方法必须返回JsonResult,在返回前的最后一个断点之前一切都很好(此时我有正确的json结果)。然后在浏览器控制台中我看到错误500(内部服务器错误)。调试器中没有异常。当我开始用F10检查调试器中的每个步骤时,F11我注意到了一些奇怪的事情。意外的不定式调用我的模型属性(有时调用模型属性,有时调用不定式函数,然后调用模型属性)。我认为这个不定式循环引发了错误(但我仍然误解了为什么我无法在调试器中看到它-也许这是IIS调试的一个方面).代码没

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

解决方案

正如所注意到的,@mreyeros和@LastCoder自引用可能是此类行为的原因。我已详细检查了我的模型,并找到了以下位置:

    private IEnumerable<CollegeEstimateModel> _initialModels;

    public IEnumerable<CollegeEstimateModel> InitialModels
    {
        get { return _initialModels = _initialModels ?? CreateInitialModelsList(); }
    }
私有IEnumerable\u初始模型;
公共IEnumerable初始模型
{
获取{return _initialModels=_initialModels??CreateInitialModelsList();}
}
其中CollegeEstimateModel包含上述属性


我已经添加了[ScriptIgnore]属性,所有属性都变为ok。

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

也许您的模型有嵌套的循环引用,导致Json转换无限循环,直到出错为止。如果是这种情况,您需要在使用Json()方法之前展平对象。可能您的模型具有嵌套的循环引用,导致Json转换无限循环,直到出错为止。如果是这种情况,则需要在使用Json()方法之前展平对象。