Fim da Corrente encontrado antes de análise foi concluída?
-
08-07-2019 - |
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?
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.