Erro WCF “Número máximo de itens que podem ser serializados ou desserializados em um gráfico de object é ‘65536’”

Estou recebendo o seguinte erro em uma chamada do WCF:

Número máximo de itens que podem ser serializados ou desserializados em um gráfico de object é ‘65536’

Eu li uma tonelada de posts no fórum e muitos deles mencionam modificar o app.config e web.config para especificar um novo comportamento para permitir charts de object maiores. Eu fiz isso e é isso que eu tenho nesses arquivos:

App.Config no projeto WPF:

                <!--          -->               

web.config no projeto de serviço:

                               <!---->   

Isso, no entanto, não ajudou. Observe que os serviços mencionados no APP.CONFIG não são os serviços com os quais estou tendo problemas.

Eu também tentei o seguinte:

  • adicionou esses atributos à implementação de serviço: [DataContract (IsReference = true)], [ServiceBehavior (AddressFilterMode = AddressFilterMode.Any, MaxItemsInObjectGraph = 2147483646)]

  • escreveu uma class DataContractSerializerOperationBehavior personalizada que definiu o comportamento MaximumObjectsInGraph e IsReference. Também adicionou um atributo personalizado para aplicar as implementações de serviço. Por causa da desordem, eu não postei o código, mas posso adicioná-lo se alguém achar que seria benéfico.

Pensamentos? Idéias? Para onde eu vou daqui?

Desde já, obrigado!

    Acabei de perceber que o seu arquivo de configuração do WPF não está certo. Então, eu apaguei todos os meus comentários porque eles estavam assumindo uma configuração válida do WCF. Seu arquivo de configuração do WPF não está certo … ele precisa dizer “Cliente” em vez de serviço … Você está usando “Add Service Reference” no Visual Studio? se assim for, deveria ter criado o arquivo de configuração correto para você.

    Caso contrário, consulte o MSDN para o formato correto para o arquivo de configuração do cliente no seu projeto do WPF.

    Configurar os valores abaixo resolveu o problema para mim.

    Configuração do cliente:

                           

    Configuração do servidor:

                                     

    Você já tentou aumentar o buffer e o tamanho máximo da mensagem recebida também?

     maxBufferSize="6553600" maxBufferPoolSize="52428800" maxReceivedMessageSize="6553600" 

    Cuidado com o elemento “dataContractSerializer”. No meu caso eu tenho o erro mencionado até que eu coloque este elemento como o primeiro item do elemento pai “comportamento”. Pelo menos do lado do cliente, de fato.

    Você está retornando uma lista genérica ou uma matriz que tem um tamanho de mais de 65536. em suas consultas, usando um select top 60000 ou não adicionando mais de 60k elementos irá resolver o seu problema.