//Serialize the Object MemoryStream ms = new MemoryStream(); IFormatter formatter = new BinaryFormatter(); formatter.Serialize(ms,ObjectToSerialize); byte[] arrbyte = new byte[ms .Length]; ms.Read(arrbyte,(int)ms .Length); ms.Close(); //Deserialize the Object Stream s = new MemoryStream(arrbyte); s.Position = 0; Object obj = formatter.Deserialize(s);//Throws an Exception s.Close();
如果我尝试以上述方式进行反序列化,则将异常作为
‘二进制流’0’不包含有效的BinaryHeader.可能的原因是序列化和反序列化之间的无效流或对象版本的变化.
以下代码正在工作
//Serialize the Object IFormatter formatter = new BinaryFormatter(); MemoryStream ms = new MemoryStream(); formatter.Serialize(ms,ObjectToSerialize); ms.Seek(0,SeekOrigin.Begin); byte[] arrbyte = ms.ToArray(); //Deserialize the Object Stream s= new MemoryStream(byt); stream1.Position = 0; Object obj = formatter.Deserialize(s); stream1.Close();
唯一的区别是第一种方法使用Read方法来填充字节数组,其中第二种方法使用Seek& ToArray()填充字节数组.
什么是异常的原因.