Подтвердить что ты не робот

Конец потока, встреченный до разбора, был завершен?

Я пытаюсь десериализовать поток, но я всегда получаю эту ошибку "Конец потока, встречающегося до завершения синтаксического анализа"?

Вот код:

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

У кого-нибудь есть идеи?

4b9b3361

Ответ 1

Попробуйте установить позицию в 0 вашего потока и не используйте свой объект, кроме типа объекта.

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

Ответ 2

Убедитесь, что сериализация завершена, и что тип сериализации соответствует типу де-сериализации (т.е. убедитесь, что вы сериализуетесь с помощью BinaryFormatter, если вы дезацинируете с помощью одного). Кроме того, убедитесь, что поток, который вы сериализовали, чтобы действительно завершить сериализацию, с Stream.Flush() или что-то в этом роде.

Ответ 3

s.Position = 0;

это потому, что вам нужно вернуться к началу, чтобы начать копирование данных по массиву!

Ответ 4

В моем случае я использовал:

stream.Seek(0, SeekOrigin.Begin);

после того, как я сериализовал поток, и до того, как я десериализовал поток, вы можете использовать обаяние. надеюсь, что это поможет!

Ответ 5

У меня было такое же исключение, пока я не добавил тег [Serializable] в класс I, который был Serializing:)

Тогда все сработало отлично.