2012-08-31 6 views
2

J'ai un objet personnalisé Je suis en train de sérialisation en utilisant Protobuf-net et l'exception suivante est générée:Protobuf-net sérialisation InvalidOperationException

InvalidOperationException était non gérée: Impossible d'écrire un en-tête de Variant jusqu'à ce que les données de chaîne a été écrit La chose que je trouve intéressante est qu'à aucun moment dans mon graphe d'objet il n'y a une chaîne sérialisée. Quelqu'un a-t-il déjà vu une erreur comme celle-ci avant et y a-t-il une cause connue? Merci

+1

Dans ce contexte, "the String data" fait référence à la spécification du fil protobuf, où "string" est un * wire-type * qui ne signifie pas nécessairement "une chaîne de texte". Fondamentalement, il est habituellement "en-tête, valeur, en-tête, valye, ..." où l'en-tête * inclut (sous forme très compressée) le type de fil de la valeur suivante; par conséquent, s'il se trouve en train d'écrire "header, header", il sait que quelque chose ne va pas, et il se plaint qu'aucune valeur n'a été écrite pour le premier en-tête, qui a été de type: "string". Dans l'ensemble cependant, je * soupçonne * que c'est un bug de longue date. –

Répondre

1

Cela ressemble beaucoup le bug ici:

https://code.google.com/p/protobuf-net/issues/detail?id=218.

Etes-vous en train de sérialiser un octet de longueur zéro [] à un moment donné de votre objet?

+0

Il y avait un tableau d'octets de longueur zéro dans toutes les occasions où cette erreur se produisait. J'ai arrêté les tableaux de longueur nulle et cela semble avoir arrangé les choses. Je vais probablement essayer une version plus récente de protobuf-net et voir si cela corrige les choses plus correctement – mcd40

+0

@mcd quelle construction utilisez-vous quand cela arrive? –

+0

@MarcGravell Je pense que c'est 2.0.0.404 – mcd40

Questions connexes