2

я получаю исключение, когда есть слишком много объектов вернулись:метод WCF бросает исключение из максимальных элементов в графе объектов является «65536»

Форматировщика бросил исключение при попытке десериализации сообщений: Существовало при попытке десериализации параметра http://.../Contract:GetBlaBlaResult. Сообщение InnerException: «Максимальное количество элементов, которые могут быть сериализованы или десериализованы в графе объектов, -« 65536 ». Измените график объекта или увеличьте квоту MaxItemsInObjectGraph. ». Дополнительную информацию см. В InnerException.

Я просмотрел его и добавляют в поведении на стороне сервера:

<behaviors> 
    <serviceBehaviors> 
     <behavior name="MyServiceBehavior"> 
     <dataContractSerializer maxItemsInObjectGraph="2147483646"/> 

     ... 

И в стороне клиента:

<behaviors> 
    <endpointBehaviors> 
     <behavior name="maxItems"> 
      <dataContractSerializer maxItemsInObjectGraph="2147483646" /> 
     </behavior> 
    </endpointBehaviors> 
</behaviors> 

Но, кажется, что это игнорируется, и исключение держит возникающие.

Дело в том, я использую XmlSerializer (для атрибутов элементов):

[ServiceContract(Namespace = "http://BlaBla.com/webservices/BlaBlaService")] 
[XmlSerializerFormat(SupportFaults = true)] 
public interface IBlaBlaServices 
{ 
    [OperationContract] 
    BlaBlaResponse GetBlaBla(BlaBlaRequestMessage searchBlaBlaRequest); 
} 

и исключения, как вы можете видеть, относится к DataContractSerializer (и поэтому конфигурация я добавил выше) ,

Это XmlSerializer, который испортил вещи?

Может кто-нибудь посоветуйте пожалуйста?

Большое спасибо :)

+0

http://stackoverflow.com/questions/7476853/wcf-error-maximum-number-of-items-that-can-be-serialized-or-deserialized-in-an –

ответ

2

Просто чтобы убедиться, Вы подаете заявление поведение MyServiceBehavior к определению службы в конфигурации службы и поведение MaxItems к определению конечной точки в клиенте конфигурации (атрибут behaviorConfiguration)?

+0

Да, хотя мне кажется странно, потому что предполагается, что это кросс-платформы, и идея рассказать клиенту, как настроить свою сторону, выглядит неловко. – graumanoz

+0

Да, действительно, это немного неудобно. Если вы применяете атрибут ServiceBehavior для установки MaxItemsInGraph, это работает? [ServiceBehavior (MaxItemsInObjectGraph = 2147483646)] (о реализации Сервиса, а не о контракте). – Jeff

+0

Спасибо Jeffn825 за внимание :) Настройка поведения была решением в конце концов, и XmlSerializer не имеет ничего общего с проблемой. Я только что ошибся с именем поведения ... – graumanoz