Qualcuno ha visto questo problema con protobuf-net over net.msmq
-
26-09-2019 - |
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?
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
.