我正在使用WCF和Entity Framework。我有一个Web服务,它返回一个指向某个实体对象数组的对象。当Silverlight客户端调用该方法时,我得到一个'NotFound'异常。
我探索了WCF日志和事件日志,发现错误是序列化对象时出现的IndexOutOfRangeException。有一个很大的堆栈痕迹,当我分析以下引起我的注意。在此之前,我的模型的片段(我翻译名称以便于理解):
Entity BaseItem: (Some properties) DetailItem[] Details; Entity DetailItem: (Some properties) RelatedItem ExtraInfo; Entity RelatedItem: (Some properties)
然后我有这个callstack:
(...) in WriteArrayOfDetailItemToXml(...) (...) in WriteBaseItemToXml(...) (...) in WriteDetailItemToXml(...) (...) in WriteArrayOfDetailItemToXml(...) (...) in WriteRelatedItemToXml(...) (...) in WriteDetailItemToXml(...) (...) ib WriteArrayOfDetailItemToXml(...) (...) em WriteBaseItemToXml(...) em System.Runtime.Serialization.ClassDataContract.WriteXmlValue(...)
在我看来,序列化程序进入了一个递归循环,试图编写所有属性,包括互惠属性(我不知道这是否是名称,我的意思是框架在关系的两边生成的属性)。
有没有人知道可能发生的事情以及导致此错误的原因是什么?