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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top