Domanda

sto vedendo un problema in cui mando messaggi di grandi dimensioni oltre net.msmq WCF utilizzando protobuf-net e ottenere il seguente errore:

Il formattatore ha generato un'eccezione durante il tentativo di deserializzare il messaggio: Errore nella deserializzazione corpo del messaggio di richiesta per il funzionamento 'DeliverData'. elemento terminale 'proto' dal namespace ' http: // MyNamespace ' previsto

Se la dimensione del messaggio è sotto 16k, funziona

Se rimuovo protobuf-net, funziona

Se posso passare al basichttp, funziona

Ma se la dimensione del messaggio è superiore a 16k, utilizzando protobuf-net, oltre net.msmq, ottengo l'errore. Ho impostato maxBufferPoolSize e MaxReceivedMessageSize sufficientemente grande, non aiuta.

Qualcun altro ha visto questo? Qualcun altro ha usato protobuf-net + net.msmq per messaggi di grandi dimensioni e ottenuto di lavoro?

È stato utile?

Soluzione

Ci scusiamo per il ritardo - vacanze ecc No, non ho visto un problema specifico con quello. Il fatto che si chiama "l'elemento End" suggerisce che è nello strato xml al momento (che è prima di protobuf-net davvero viene coinvolto). Avete qualche modo che io possa in modo affidabile riprodurre questo?


In seguito all'inchiesta, il problema qui sembra essere lettori-quote del WCF; l'eccezione sembra essere inghiottito da MSMQ, quindi non era immediatamente evidente. Questo può essere risolto in configurazione , o nel codice (se si sta impostando le associazioni manualmente) facendo riferimento System.Runtime.Serialization e aumentando il legame .ReaderQuotas.MaxArrayLength appropriato. Il valore massimo consentito è 2147483647.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top