System.OutOfMemoryException при попытке с 70 файлами SharpZipLib - PullRequest
3 голосов
/ 13 января 2020

Я попытался сжать 70 документов в формате pdf, но в результате возникла исключительная ситуация System.OutOfMemoryException. Пожалуйста, посмотрите на следующий код и дайте мне знать, что с ним не так. Обратите внимание, что я также опубликовал вопрос на GitHub .

public byte[] DownloadPaperList()
    {
        try
        {
            PaperDAO paperDAO = new PaperDAO();
            List<PaperModel> papers = paperDAO.GetPaperListByPaperIds(paperIDs);                                
            using (MemoryStream outputMemoryStream = new MemoryStream())
            {
                using (var zipOutputStream = new ZipOutputStream(outputMemoryStream))
                {
                    papers = papers.OrderBy(x => x.Order).ToList();                        
                    foreach (PaperModel paper in papers)
                    {
                        byte[] decryptedPaper
                         = CryptoServices.DecryptFile(paper.FileData, paperDAO.GenerateCloseOpenFile(paper, string.Empty), paper.SEVersion);

                        ZipEntry zipFileEntry = new ZipEntry(paper.DocName + ".pdf")
                            {
                                Size = decryptedPaper.Length
                            };

                        zipOutputStream.SetLevel(3);
                        zipOutputStream.PutNextEntry(zipFileEntry); //EXCEPTION THROWS HERE!!!

                        StreamUtils.Copy(new MemoryStream(decryptedPaper), zipOutputStream, new byte[4096]);
                    }
                    zipOutputStream.CloseEntry();
                    // Stop ZipStream.Dispose() from also Closing the underlying stream.
                    zipOutputStream.IsStreamOwner = false;
                    outputMemoryStream.Position = 0;
                }
                return outputMemoryStream.ToArray();
            }
        }            
        catch (Exception)
        {
            throw;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...