C# 在内存中创建ZipArchive,然后下载到客户端

C# 在内存中创建ZipArchive,然后下载到客户端,c#,http,zip,C#,Http,Zip,我已经读了好几篇关于这个的博客文章和问题,但是我不能让它工作。它只是下载一个损坏的ZIP存档文件,如果你在其中设置断点,字节的长度是多少?添加内容长度标题也可能有帮助。那么,如果您只返回PDF文件(暂时忽略压缩),会发生什么呢,我在没有开发工具的情况下远程处理这个问题,所以调试是一个巨大的痛苦:p我相信我在项目开始时成功地测试了PDF部分,但我会再试一次。 using (var outStream = new MemoryStream()) { using

我已经读了好几篇关于这个的博客文章和问题,但是我不能让它工作。它只是下载一个损坏的ZIP存档文件,如果你在其中设置断点,
字节的长度是多少?添加
内容长度
标题也可能有帮助。那么,如果您只返回PDF文件(暂时忽略压缩),会发生什么呢,我在没有开发工具的情况下远程处理这个问题,所以调试是一个巨大的痛苦:p我相信我在项目开始时成功地测试了PDF部分,但我会再试一次。
       using (var outStream = new MemoryStream())
    {
        using (ZipArchive archive = new ZipArchive(outStream, ZipArchiveMode.Create, true))
        {
            foreach (string Item in Items)
            {
                ReportParameter[] prms = new ReportParameter[1];
                prms[0] = new ReportParameter("Item", Item, false);

                rv.ServerReport.SetParameters(prms);

                rv.ShowParameterPrompts = false;
                rv.ServerReport.Refresh();

                byte[] bytes = rv.ServerReport.Render("PDF", null, out mimeType, out encoding, out extension, out streamids, out warnings);

                string fileName = Item + ".pdf";
                var fileInArchive = archive.CreateEntry(fileName);
                using (var entryStream = fileInArchive.Open())
                using (var fileToCompressStream = new MemoryStream(bytes))
                {
                    fileToCompressStream.CopyTo(entryStream);
                }
            }
        }
        outStream.Position = 0;
        Response.ClearContent();
        Response.ClearHeaders();
        Response.AppendHeader("content-disposition", "attachment; filename=PDFReports_" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".zip");
        Response.Write(outStream);
    }