我遇到了例外:
“对象图中可序列化或反序列化的项目最大数量为‘65536’”
在三台服务器中的两台(Staging 和 Production)上,我想不出为什么会出现问题。
由于它在测试服务器 [IIS7.5 w2k8r2] 上运行,我觉得我可以排除该网站的 web.config。
我收集了 machine.config 和 web 服务器的 web.configs,并对它们进行了比较,没有发现任何问题。
是否有来自其他地方的配置设置?
编辑:
这是配置文件的相关部分:
</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,但仍然不起作用。
答案1
您在三台服务器上测试的操作是否完全相同?如果您使用的是不同的数据集,那么这可以解释为什么您没有在所有服务器上看到它。
这通常是由于客户端无法充分序列化/反序列化造成的。您可以通过添加端点行为(或者如果在项目中使用自定义行为,则添加自定义行为)来增加阈值:
<endpointBehaviors>
<behavior name="blah">
<dataContractSerializer maxItemsInObjectGraph="2147483646"/>
</behavior>
</endpointBehaviors>
您可能需要在您的 web.config 和客户端的 app.config 中执行此操作。