有没有人在使用 .NET Deflate Stream 时遇到以下错误?
System.IndexOutOfRangeException:索引超出了数组的范围。 在 System.IO.Compression.HuffmanTree.CreateTable() 在 System.IO.Compression.Inflater.DecodeDynamicBlockHeader() 在 System.IO.Compression.Inflater.Decode() 在 System.IO.Compression.Inflater.Inflate(Byte[] 字节,Int32 偏移量,Int32 长度) 在 System.IO.Compression.DeflateStream.Read(字节 [] 数组,Int32 偏移量,Int32 计数)
解压缩从磁盘读取的 deflate 流时会发生此错误。我正在使用简单的索引文件,其中包含许多小的 deflate 编码块。这是一个非常罕见的错误,因为几十万(或百万)中只有一个压缩项目会遇到此错误。
似乎 HuffmanTree.CreateTable 方法异常和例程试图填充超出其限制的数组。
我尝试分配一个两倍于原始大小的数组进行解压,但它仍然会引发错误。
解码后的数据似乎完好无损,但是,例程不断尝试解码并溢出缓冲区。
我想我可以尝试/捕获并检测是否发生此错误,然后尝试处理它。
对问题的任何见解将不胜感激。
(I have tried DotNetZip which is causing different issues in the 64 bit environment I am working in.)