【发布时间】:2013-12-10 13:55:58
【问题描述】:
我们的 WCF 服务的一种方法在生产环境中抛出异常:
格式化程序在尝试反序列化消息时抛出异常:有一个
尝试反序列化参数 http://our_schema:GetSomeListResult 时出错。这 InnerException 消息是“可以序列化的最大项目数或 在对象图中反序列化的是“65536”。更改对象图或增加 MaxItemsInObjectGraph 配额。
GetSomeList 方法返回一个对象列表(15 个属性 - 整数、枚举、字符串、日期时间),它有大约 6k 个元素。但是,相同的服务配置不会在我的本地机器和测试环境上导致此错误。 我知道如何解决这个错误:
<behavior name="basicEndpointBehavior">
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
但我不明白它的本质。
那么序列化/反序列化数组中对象的实际数量是多少? List.Count? List.Count*(属性数量)?如果公式是List.Count*(属性数),对象数=6k*15=90k,大于65536。为什么这个方法调用在本地同样大小的数组也能正常工作?
【问题讨论】:
-
这样就可以在本地打同一个数据集不报错?您确定您的本地配置与生产环境中的配置相同吗?