WCF中反序列化对象时出现错误。

3
我已经在WCF中创建了一个REST服务,但是我遇到了以下问题:

反序列化类型System.Collections.Generic.IList对象时出错。由于正在读取的XML数据具有比配额允许的更多层嵌套,因此已超过最大读取深度(32)。可以通过更改创建XML阅读器时使用的XmlDictionaryReaderQuotas对象上的MaxDepth属性来增加该配额。

由于我按照REST Starter Kit的开发方式开发服务,因此没有在配置中指定任何类型的绑定。请建议如何修复它。
代码有时可以正常工作,但确实会抛出错误。

3
  1. Post stack trace 翻译为:发布堆栈跟踪。
  2. Include definition of the class whose list you are trying to serialise, it looks like a circular reference 翻译为:请包含您尝试序列化其列表的类的定义,看起来像是一个循环引用。
- Aliostad
4个回答

6

在我的情况下,问题是我返回了从数据上下文获取的Entity Framework对象。解决方案是在返回它们之前分离每个对象。


1

0
今天我遇到了同样的问题。如果您没有正确设置数据契约中的KnowType和IsReference,那么可能会出现循环引用的情况。首先检查这些点。真的!
但是当你面对这种行为时。
代码有时运行良好,但确实会抛出错误。
您还应该检查您在传输线上发送的图形是否深度和复杂(例如超过两个导航属性深度)。然后,它可能只是绑定配置中ReaderQuotas的MaxDepth太低。当您最深的导航属性为空时,您的服务将正常工作,但当它们包含至少一个元素时,会抛出此错误。
此配置的默认值为32,请尝试64。
现在我们可以就在服务上使用太多深度图形的质量设计与WCF配置中的低默认值进行争论。
我不是说您必须将图形分解为较小的部分,但您应该这样做。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接