在WCF 4.0服务中,我们在通用列表中收到大量数据。此列表对象图大于65536默认限制。我们已经习惯了,所以我们已经配置了服务以获得那些大图。
<serviceBehaviors>
<behavior>
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</serviceBehaviors>
使用上面的xml配置块我们已经避免了过去没有问题的问题,但现在它不起作用。唯一的区别是,我们在我们尝试在WCF方法中反序列化的巨大列表元素中使用 KnownTypes 。
也许,我错过了一些针对知识类型的特殊配置吗?
答案 0 :(得分:7)
不要忘记检查客户端配置。
在How to fix MaxItemsInObjectGraph error?
中查看类似的答案您需要在上面设置MaxItemsInObjectGraph dataContractSerializer在客户端和服务器上使用行为 服务。
和maxItemsInObjectGraph ignored
我忘记将此设置放在我的客户端app.config文件
中
答案 1 :(得分:1)
参考http://wcf.codeplex.com/discussions/258278,将以下ServiceBehavior属性放在类定义中,如下所示:
[ServiceContract]
[ServiceBehavior(MaxItemsInObjectGraph = int.MaxValue)]
public class MaintenanceResource
答案 2 :(得分:0)
就像迈克尔所说,我需要在客户端上添加一个这样的行为(在我网站的web.config中):
<behavior name="deepGraph">
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
...
<client>
<endpoint address="..." behaviorConfiguration="deepGraph" ... />
</client>