Метод WCF выбрасывает исключение максимального количества элементов в графе объектов '65536' - PullRequest
2 голосов
/ 31 августа 2010

Я получаю исключение, когда возвращено слишком много объектов:

Форматировщик выдал исключение при попытке десериализации сообщения: при попытке десериализации параметра произошла ошибка 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, который испортил вещи?

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

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

1 Ответ

2 голосов
/ 31 августа 2010

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

...