首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

GZipStream 中 报一个“GZip 头中的幻数不正确。请确保正在传入 GZip 流"这样的异常

2012-06-20 
GZipStream 中 报一个“GZip 头中的幻数不正确。请确保正在传入 GZip 流这样的错误在解压文件时,GZipStream

GZipStream 中 报一个“GZip 头中的幻数不正确。请确保正在传入 GZip 流"这样的错误
在解压文件时,GZipStream 中 报一个“GZip 头中的幻数不正确。请确保正在传入 GZip 流。” 这样的错误


  改怎么解决????

[解决办法]
显然你的CompressStream用法有误,那个不是返回压缩流对象,你将要压缩的原始stream流放入了GZipStream初始化中,变成了输出流了,真正要返回的压缩流对象是GZipStream初始化中的第一个参数。 

C# code
       #region 压缩解压object        public static byte[] CompressionObject(object DataOriginal)        {            if (DataOriginal == null) return null;            BinaryFormatter bFormatter = new BinaryFormatter();            MemoryStream mStream = new MemoryStream();            bFormatter.Serialize(mStream, DataOriginal);            byte[] bytes = mStream.ToArray();            MemoryStream oStream = new MemoryStream();            DeflateStream zipStream = new DeflateStream(oStream, CompressionMode.Compress);            zipStream.Write(bytes, 0, bytes.Length);            zipStream.Flush();            zipStream.Close();            return oStream.ToArray();        }        public static object DecompressionObject(byte[] bytes)        {            if (bytes == null) return null;            MemoryStream mStream = new MemoryStream(bytes);            mStream.Seek(0, SeekOrigin.Begin);            DeflateStream unZipStream = new DeflateStream(mStream, CompressionMode.Decompress, true);            object dsResult = null;            BinaryFormatter bFormatter = new BinaryFormatter();            dsResult = (object)bFormatter.Deserialize(unZipStream);            return dsResult;        }        #endregion
[解决办法]
先确保你的GZip流是否正确,如果你是使用了DecompressionObject(byte[] bytes)方法还是出现这问题,那问题就是GZip不完整。原因有很多,如果你是通过网络传输的,那就是没有接收完整或者发送方没有发送完整,最好给出相关代码。

热点排行