.net 为什么CopyTo会抛出ArgumentOutOfRangeException?

.net 为什么CopyTo会抛出ArgumentOutOfRangeException?,.net,stream,.net,Stream,为什么会导致异常?下面的代码工作得很完美,这就是我认为copyto会做的 using (var mem = new MemoryStream()) { using (var memin = new MemoryStream(v.body)) using (var comp = new BZip2InputStream(memin)) { //comp.CopyTo(mem); //Non-negative number required (System.A

为什么会导致异常?下面的代码工作得很完美,这就是我认为copyto会做的

using (var mem = new MemoryStream())
{
    using (var memin = new MemoryStream(v.body))
    using (var comp = new BZip2InputStream(memin))
    {
        //comp.CopyTo(mem); //Non-negative number required (System.ArgumentOutOfRangeException)
        var buf = new Byte[1024 * 4];
        int len=0;
        while ((len = comp.Read(buf, 0, buf.Length)) > 0)
        {
            mem.Write(buf, 0, len);
        }

    }

这是
BZip2InputStream.Read(byte[]buffer,int offset,int count)中的一个bug
。它返回-1而不是0。我报告


也可通过!=0而不是像问题中的代码那样>0。

这是
BZip2InputStream.Read(byte[]buffer,int offset,int count)中的一个错误。
。它返回-1而不是0。我报告


也可通过!=0而不是问题中的代码所做的>0。

因为
v.body
的内容有问题,或者
BZip2InputStream
期望看到的内容与其实际看到的内容不匹配?异常是从
SharpZipLib
引发的。阅读代码并找出原因。@Jon不正确,堆栈跟踪显示它发生在System.IO.MemoryStream.Write InternalCopyTo和CopyTo之后。BZip2InputStream不在堆栈跟踪中。所以凭猜测进行调试是行不通的。您是否介意发布堆栈跟踪和其他相关信息,以便我们停止这样做?因为
v.body
的内容有问题,或者
BZip2InputStream
期望看到的内容与实际看到的内容不匹配?异常是从
SharpZipLib
引发的。阅读代码并找出原因。@Jon不正确,堆栈跟踪显示它发生在System.IO.MemoryStream.Write InternalCopyTo和CopyTo之后。BZip2InputStream不在堆栈跟踪中。所以凭猜测进行调试是行不通的。您介意发布堆栈跟踪和其他相关信息,以便我们可以停止这样做吗?