WCF不能在某些服务器上工作

我得到的例外:

“在对象图中可以序列化或反序列化的项目的最大数目是'65536'”

在三台服务器上有两台(分段和生产),我想不出为什么会有问题。

由于它在testing服务器[IIS7.5 w2k8r2]上工作,我觉得我可以排除网站的web.config。

我已经收集了machine.config和web服务器的web.configs,并对它们进行了比较,我看不到任何问题。

可以从其他地方进行configuration设置吗?

编辑:

这是configuration文件的相关部分:

</system.webServer> <system.serviceModel> <behaviors> <endpointBehaviors> <behavior name="TheEndPointBehaviour"> <dataContractSerializer maxItemsInObjectGraph="6553600" /> </behavior> </endpointBehaviors> </behaviors> <bindings> <basicHttpBinding> <binding name="TheEndPoint" maxReceivedMessageSize="6553600" /> </basicHttpBinding> </bindings> <client> <endpoint address="http://ipaddress/folder/service.svc" binding="basicHttpBinding" bindingConfiguration="TheEndPoint" contract="Reference.IService" name="TheEndPoint" /> </client> 

开发人员使用6553600,但是我已经把这个提高到2147483647,这是行不通的。

所有三台服务器上的testing操作是否完全相同? 如果你使用不同的数据集,那么这可以解释为什么你没有在所有的服务器上看到它。

这通常是客户端无法序列化/反序列化的结果。 您可以通过添加终结点行为(或在项目中使用它们时的自定义行为)来增加阈值:

  <endpointBehaviors> <behavior name="blah"> <dataContractSerializer maxItemsInObjectGraph="2147483646"/> </behavior> </endpointBehaviors> 

你可能需要在你的web.config和你的客户端的app.config中都这样做。