C# DotNetZip异常错误状态(无效的文字/长度代码)

C# DotNetZip异常错误状态(无效的文字/长度代码),c#,asp.net-mvc,dotnetzip,C#,Asp.net Mvc,Dotnetzip,NET MVC 4应用程序,在这个应用程序中,我必须下载一个Zip文件中由字节数组列表表示的多个文件,因此我使用了DotNetZip库。当我执行这段代码时,如果: using (MemoryStream ms = new MemoryStream()) { using (var archive = new ZipFile()) { foreach (var item in byteArrays) {

NET MVC 4应用程序,在这个应用程序中,我必须下载一个Zip文件中由字节数组列表表示的多个文件,因此我使用了DotNetZip库。当我执行这段代码时,如果:

 using (MemoryStream ms = new MemoryStream())
       {
        using (var archive = new ZipFile())
        {
         foreach (var item in byteArrays)
         {
          var entry = archive.AddEntry("file" + i + ".pdf", item);
          i++;
          archive.Save("All.zip");
           using (var zipStream = entry.OpenReader())
           {
           zipStream.Write(item, 0, item.Length);
          }
         }
        }
        return File(ms.ToArray(), "application/zip", "all.zip");
        }
在这一行:

zipStream.Write(item, 0, item.Length);
我得到了这个错误:

错误状态无效的文字/长度代码

用户代码未处理Ionic.Zlib.ZlibException HResult=-2146233088消息=错误状态无效文字/长度代码 Source=DotNetZip堆栈跟踪: 在Ionic.Zlib.InflateManager.inflateFlush类型冲洗时 在Ionic.Zlib.ZlibCodec.inflateFlush类型刷新时 在Ionic.Zlib.ZlibBaseStream.WriteByte[]缓冲区,Int32偏移量,Int32计数 在Ionic.Zlib.DeflateStream.WriteByte[]缓冲区,Int32偏移量,Int32计数 在Ionic.Crc.CrcCalculatorStream.WriteByte[]缓冲区,Int32偏移量,Int32计数 在Host.Web.Areas.FranceArea.Controllers.FranceController.downloadMultiplefile 在里面 C:\Projects\Oddo.Web.OBAM\u Icn\Host\Host.Web\Areas\FranceArea\Controllers\FranceController.cs:line 503 在lambda_methodClosure,ControllerBase,Object[] 在System.Web.Mvc.ActionMethodDispatcher.ExecuteControllerBase controller中,对象[]参数 位于System.Web.Mvc.ReflectedActionDescriptor.ExecuteControllerContext controllerContext,IDictionary2参数 位于System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodControllerContext controllerContext,ActionDescriptor ActionDescriptor,IDictionary2 参数 在System.Web.Mvc.Async.AsyncControllerActionInvoker.c__DisplayClass42.b__41 在System.Web.Mvc.Async.AsyncResultRapper.c__DisplayClass81.b__7IAsyncResult中 _ 位于System.Web.Mvc.Async.AsyncResultRapper.WrappedAsyncResult1.End 位于System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodIAsyncResult 异步结果 在System.Web.Mvc.Async.AsyncControllerActionInvoker.c__DisplayClass37.c__DisplayClass39.b__33 在System.Web.Mvc.Async.AsyncControllerActionInvoker.c__DisplayClass4f.b__49 内部异常:

您不需要调用zipStream.Write,因为您已经在.AddEntry调用中传递了数据

这对我很有用:

var i = 1;

using (var outStream = new MemoryStream())
{
    using (var archive = new ZipFile())
    {
        foreach (var item in byteArrays)
        {
            using (MemoryStream ms = new MemoryStream(item))
            {
                var entry = archive.AddEntry($"file{i++}.pdf", ms);
                archive.Save(outStream);
            }
        }
    }
    outStream.Position = 0;
    return File(outStream.ToArray(), "application/zip", "all.zip");
}

打开读写器?感谢您的回复,下载归档文件很有效,但当我打开zip并尝试打开或解压缩文件时,我发现文件无法打开,因为它已损坏。。。出现这种问题的原因是什么?您可以检查字节数组是否为有效的PDF,还可以检查zip中的文件是否与字节数组具有相同的长度是的,当我打开存档并检查文件大小时,我可以看到它们保持了初始大小,这意味着没有丢失数据:/但是问题仍然存在