最近我遇到了一个非常奇怪的问题。我的 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] 属性,一切都正常了。