Question

Je vois un problème où j'envoie des messages volumineux sur net.msmq WCF en utilisant protobuf-net et obtenir l'erreur suivante:

Le formatter a lancé une exception tout en essayant de désérialiser le message: Erreur dans désérialisation corps du message de demande pour l'opération « DeliverData ». élément final 'proto' de namespace ' http: // mynamespace ' attendu

Si la taille du message est sous 16k, il fonctionne

Si je supprime protobuf-net, cela fonctionne

Si je passe à basichttp, cela fonctionne

Mais si la taille du message est sur 16k, en utilisant protobuf-net, sur net.msmq, je reçois l'erreur. J'ai mis maxBufferPoolSize et maxReceivedMessageSize suffisamment grand, il ne l'aide.

Quelqu'un a vu d'autre cela? Est-ce que quelqu'un d'autre utilisé + net.msmq protobuf net pour les grands messages et obtenu à travailler?

Était-ce utile?

La solution

Toutes mes excuses pour le retard - vacances etc. Non, je n'ai pas vu un problème spécifique avec cela. Le fait qu'il appelle le « élément final » suggère qu'il est dans la couche xml au moment (ce qui est avant protobuf net vraiment se implique). Avez-vous une façon que je puisse reproduire de manière fiable cela?


Après enquête, le problème apparaît ici comme lecteur-quotas d'un FCZ; l'exception semble être avalé par MSMQ, n'a donc pas été immédiatement évidente. Cela peut être corrigé en configuration , ou dans le code (si vous configurez vos fixations manuellement) en faisant référence à System.Runtime.Serialization et en augmentant la .ReaderQuotas.MaxArrayLength de liaison appropriée. La valeur maximale autorisée est 2147483647.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top