Frage

Ich versuche, einen Strom zu deserialisieren, aber ich bekomme immer diese Fehlermeldung „End of-Stream aufgetreten, bevor das Parsen abgeschlossen“?

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

Jede Idee?

War es hilfreich?

Lösung

Versuchen Sie, die Position auf 0 des Strom zu setzen und verwenden Sie nicht Ihr Objekt, sondern um den Objekttyp.

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

Andere Tipps

Stellen Sie sicher, dass die Serialisierung abgeschlossen ist, und dass die Serialisierung Art der Deserialisierung Typ übereinstimmt (das heißt, stellen Sie sicher, dass Sie mit einem BinaryFormatter sind serialisiert, wenn Sie mit einer De-Serialisierung). Vergewissern Sie sich außerdem, dass der Strom Sie wirklich serialisiert fertig Serialisierung mit einem Stream.Flush () oder etwas in diesem Sinne.

Ich hatte die gleiche Ausnahme ausgelöst, bis ich den [Serializable] Tag die Klasse hinzugefügt wurde ich Serialisierung:)

Dann werden alle es funktioniert perfekt.

s.Position = 0;

Dies ist, weil Sie an den Start gehen zurück Kopieren von Daten auf dem Array zu starten!

In meinem Fall habe ich:

stream.Seek(0, SeekOrigin.Begin);

, nachdem ich den Stream serialisiert, und bevor ich deserialisiert der Strom arbeitet Charme. hoffe, das hilft!

Ich traf gerade ein ähnlicher Fehler

Es war über einen anderen Datentyp, wenn die Serialisierung und Deserialisierung bekommen. Durch einen Fehler entdecken, wenn die Daten an MariaDB Speicherung verwenden ich MEDIUMTEXT- und wenn die Daten immer benutzen ich Text aus diesem Grunde habe ich nur einen Teil des Stroms.

Just überprüfen, ob die Datentypen gleich sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top