使用.NET Deflate Stream时是否有任何人遇到以下错误?
System.IndexOutOfRangeException: Index was outside the bounds of the array. at System.IO.Compression.HuffmanTree.CreateTable() at System.IO.Compression.Inflater.DecodeDynamicBlockHeader() at System.IO.Compression.Inflater.Decode() at System.IO.Compression.Inflater.Inflate(Byte[] bytes, Int32 offset, Int32 length) at System.IO.Compression.DeflateStream.Read(Byte[] array, Int32 offset, Int32 count)
解压缩从磁盘读取的deflate流时会发生此错误。我正在使用简单的索引文件,其中包含许多小的deflate编码块。这是一个非常罕见的错误,因为只有几十万(或百万)中的一个压缩项遇到此错误。
似乎HuffmanTree.CreateTable方法异常并且例程尝试将数组填充超出其限制。
我尝试过分配一个比原始版本大两倍的数组进行解压缩,但它仍然会抛出错误。
解码数据似乎完好无损,但是,例程不断尝试解码并溢出缓冲区。
我想我可以尝试/捕获并检测是否发生此错误然后尝试处理它。
对此问题的任何见解都将不胜感激。
(我尝试过DotNetZip,它在我工作的64位环境中引起了不同的问题。)