У меня исключение:
«Максимальное количество элементов, которые могут быть сериализованы или десериализованы в графе объектов - 65536».
на двух (промежуточный и производственный) из трех серверов, и я не могу понять, в чем проблема.
Поскольку он работает на тестовом сервере [IIS7.5 w2k8r2], я чувствую, что могу исключить web.config веб-сайта.
Я собрал machine.config и 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, и это не работает.
Одинаковы ли операции, которые вы тестируете, на всех трех серверах? Если вы работаете с разными наборами данных, это может объяснить, почему вы не видите его на всех серверах.
Часто это является результатом того, что клиент не может достаточно сериализовать / десериализовать. Вы можете увеличить порог, добавив поведение конечной точки (или настраиваемое поведение, если вы используете их в своем проекте):
<endpointBehaviors>
<behavior name="blah">
<dataContractSerializer maxItemsInObjectGraph="2147483646"/>
</behavior>
</endpointBehaviors>
Вам может потребоваться сделать это как в вашем web.config, так и в app.config вашего клиента.