我得到的例外:
“在对象图中可以序列化或反序列化的项目的最大数目是'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中都这样做。