it-swarm.com.de

Ende des Streams aufgetreten, bevor die Analyse abgeschlossen wurde?

Ich versuche einen Stream zu deserialisieren, erhalte jedoch immer die Fehlermeldung "Ende des Streams aufgetreten, bevor die Analyse abgeschlossen wurde"

Hier ist der Code:

        //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

Hat jemand Ideen?

40
Mister Dev

Versuchen Sie, die Position Ihres Streams auf 0 zu setzen, und verwenden Sie nicht Ihr Objekt, sondern den Objekttyp.

        BinaryFormatter b = new BinaryFormatter();
        s.Position = 0;
        return (YourObjectType)b.Deserialize(s);
50

Vergewissern Sie sich, dass die Serialisierung abgeschlossen ist und dass der Serialisierungstyp mit dem Deserialisierungstyp übereinstimmt (d. H. Sie müssen mit einem BinaryFormatter serialisieren, falls Sie mit einem Serialisierungsvorgang desert werden). Stellen Sie außerdem sicher, dass der Stream, den Sie serialisiert haben, mit einem Stream.Flush () oder einem ähnlichen Effekt wirklich mit dem Serialisieren fertig ist.

6
GWLlosa
s.Position = 0;

das liegt daran, dass Sie zum Anfang zurückgehen müssen, um Daten auf dem Array zu kopieren!

1

Ich hatte die gleiche Ausnahme, bis ich der Klasse [Serializable] die Klasse hinzufügte, die ich Serialisierung war :)

Dann hat alles perfekt funktioniert.

1
Ryan O'Connor

Ich bin gerade auf einen ähnlichen Fehler gestoßen

Beim Serialisieren und Deserialisieren ging es darum, einen anderen Datentyp zu erhalten. Wenn ich die Daten in mariadb gespeichert habe, habe ich MediumText verwendet, und als ich die Daten abgerufen habe, habe ich Text nur aus dem Stream erhalten.

Prüfen Sie einfach, ob die Datentypen gleich sind.

0
lastboy

In meinem Fall habe ich verwendet:

stream.Seek(0, SeekOrigin.Begin);

nachdem ich den Stream serialisiert habe und bevor er deserialisiert wurde, wirkt der Stream charmant. hoffe das hilft!

0