大家帮忙看看,报错“在分析完成之前就遇到流结尾。”
序列化:
  public bool Serialization(Hashtable hashtable)
    {
        BinaryFormatter binaryFormatter = new BinaryFormatter();
        System.IO.MemoryStream ms = new System.IO.MemoryStream();
        binaryFormatter.Serialize(ms, hashtable);//内存流二级制序列化
        ms.Position = 0;
        byte[] b = new Byte[ms.Length];
        ms.Read(b, 0, b.Length);
        bool flag = new Product().ss(b);
        ms.Close();
        return flag;    }下面是反序列化:
byte[] b = new Product().returnSeirazation();//数据库返回
         System.IO.MemoryStream ms = new System.IO.MemoryStream(b);  
         BinaryFormatter binaryFormatter = new BinaryFormatter(); 
         ms.Position = 0;     
         Items =(Hashtable)binaryFormatter.Deserialize(ms);//报错 在分析完成之前就遇到流结尾。”
         ms.Close();

解决方案 »

  1.   

            /// <summary>
            /// 序列化发送消息
            /// </summary>
            /// <param name="request"></param>
            /// <returns></returns>
            public static byte[] SerializeBinary(object request)
            {
                System.Runtime.Serialization.Formatters.Binary.BinaryFormatter serializer =
                new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
                System.IO.MemoryStream memStream = new System.IO.MemoryStream();
                serializer.Serialize(memStream, request);            //byte[] b = memStream.GetBuffer();
                byte[] b = memStream.ToArray();
                memStream.Close();
                return b;
            }        /// <summary>
            /// 反序列化接收消息
            /// </summary>
            /// <param name="buf"></param>
            /// <returns></returns>
            public static object DeserializeBinary(byte[] buf)
            {
                if (buf == null || buf.Length == 0) return null;
                System.IO.MemoryStream memStream = new System.IO.MemoryStream();
                memStream.Write(buf, 0, buf.Length);
                memStream.Position = 0;
                System.Runtime.Serialization.Formatters.Binary.BinaryFormatter deserializer =
                new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
                object newobj = deserializer.Deserialize(memStream);
                memStream.Close();
                return newobj;
            }