¿Se encontró el final de la secuencia antes de que se completara el análisis?
-
08-07-2019 - |
Pregunta
Estoy tratando de deserializar una transmisión pero siempre aparece este error "Fin de la transmisión encontrado antes de que se complete el análisis"
Aquí está el código:
//Some code here
BinaryFormatter b = new BinaryFormatter();
return (myObject)b.Deserialize(s);//s---> is a Stream object that has been fill up with data some line over here
¿Alguien tiene ideas?
Solución
Intente establecer la posición en 0 de su flujo y no use su objeto sino el tipo de objeto.
BinaryFormatter b = new BinaryFormatter();
s.Position = 0;
return (YourObjectType)b.Deserialize(s);
Otros consejos
Asegúrese de que la serialización se haya completado y que el tipo de serialización coincida con el tipo de deserialización (es decir, asegúrese de que está serializando con un BinaryFormatter si está des serializando con uno). Además, asegúrese de que la secuencia que serializó para realmente finalizar la serialización, con un Stream.Flush () o algo por el estilo.
Tuve la misma excepción, hasta que agregué la etiqueta [Serializable] a la clase que estaba serializando :)
Entonces todo funcionó perfectamente.
s.Position = 0;
¡Esto se debe a que debe volver al inicio para comenzar a copiar datos en la matriz!
En mi caso usé:
stream.Seek(0, SeekOrigin.Begin);
después de serializar la transmisión, y antes de deserializar la transmisión funciona de maravilla. Espero que esto ayude!
Acabo de encontrar un error similar
Se trataba de obtener un tipo de datos diferente al serializar y deserializar. Por error, al almacenar los datos en mariadb, utilicé MediumText y al obtener los datos, utilicé Text, esta es la razón por la que obtuve solo una parte de la transmisión.
Simplemente verifique si los tipos de datos son los mismos.