Errore WCF “Il numero massimo di elementi che possono essere serializzati o deserializzati in un object grafico è ‘65536’”

Sto ricevendo il seguente errore in una chiamata WCF:

Il numero massimo di elementi che possono essere serializzati o deserializzati in un object grafico è ‘65536’

Ho letto una tonnellata di post sul forum e molti menzionano la modifica di app.config e web.config per specificare un nuovo comportamento per consentire grafici di oggetti più grandi. L’ho fatto e questo è quello che ho in quei file:

App.Config sul progetto WPF:

                <!--          -->               

web.config sul progetto di servizio:

                               <!---->   

Questo, tuttavia, non ha aiutato. Si noti che i servizi a cui si fa riferimento in APP.CONFIG non sono i servizi con cui ho problemi.

Ho anche provato il seguente:

  • aggiunti questi attributi all’implementazione del servizio: [DataContract (IsReference = true)], [ServiceBehavior (AddressFilterMode = AddressFilterMode.Any, MaxItemsInObjectGraph = 2147483646)]

  • ha scritto una class personalizzata DataContractSerializerOperationBehavior che imposta il comportamento MaximumObjectsInGraph e IsReference. Aggiunto anche Attributo personalizzato per applicare questo le implementazioni del servizio. Per motivi di ingombro, non ho inserito il codice, ma posso aggiungerlo se qualcuno pensa che sarebbe utile.

Pensieri? Idee? Dove vado da qui?

Grazie in anticipo!

Ho appena realizzato che il tuo file di configurazione WPF non è corretto. Così, ho cancellato tutti i miei commenti perché stavano assumendo una configurazione WCF valida. Il tuo file di configurazione WPF non è corretto … ha bisogno di dire “Client” invece di servizio … Stai utilizzando “Aggiungi riferimento servizio” in Visual Studio? se è così, dovrebbe aver creato il file di configurazione corretto per te.

In caso contrario, fare riferimento a MSDN per il formato corretto per il file di configurazione del client nel progetto WPF.

La configurazione dei valori seguenti ha risolto il problema per me.

Configurazione client:

                       

Config server:

                                 

Hai provato anche ad alzare il buffer e la dimensione massima del messaggio ricevuto?

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

Attenti all’elemento “dataContractSerializer”. Nel mio caso ho ricevuto l’errore menzionato fino a quando ho inserito questo elemento come primo elemento dell’elemento genitore “comportamento”. Almeno sul lato client in effetti.

Si sta restituendo un elenco generico o un array con una dimensione superiore a 65536. Nelle query, l’utilizzo di una selezione superiore 60000 o l’aggiunta di più di 60k elementi risolverà il problema.