Я попытался сжать 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;
}
}