Pergunta

Eu estou tentando desserializar um fluxo, mas eu sempre obter este "fim do fluxo encontrado antes de análise foi concluído" Erro?

Aqui está o 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

Qualquer um tem ideias?

Foi útil?

Solução

Tente definir a posição a 0 de sua corrente e não utilize o objeto, mas o tipo de objeto.

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

Outras dicas

Certifique-se a serialização concluída, e que o tipo de serialização corresponde ao tipo de-serialização (ou seja, verifique se você está serialização com um BinaryFormatter se você estiver de-serialização com um). Além disso, certifique-se que o fluxo de você serializado para serialização realmente acabado, com um Stream.Flush () ou algo nesse sentido.

Eu tive a mesma exceção lançada, até que eu adicionei a tag [Serializable] para a classe I foi Serializing:)

Então, tudo funcionou perfeitamente.

s.Position = 0;

isso é porque você tem que ir para a parte de trás início para começar a copiar os dados sobre a matriz!

No meu caso eu usei:

stream.Seek(0, SeekOrigin.Begin);

depois que eu serializado o fluxo, e antes que eu desserializado o fluxo funciona charme. espero que isso ajude!

Eu só encontrou um erro semelhante

Foi sobre a obtenção de um tipo de dados diferente quando serialização e desserialização. Por engano, ao armazenar os dados para MariaDB eu usei MEDIUMTEXT e ao levantar os dados que eu usei texto é por isso que eu tenho apenas uma parte do fluxo.

Basta verificar se os tipos de dados são os mesmos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top