无法在不可搜索的输入流上使用PKZIP加密

Med*_*tor 0 c# zip

我使用DotNetZip。

我得到错误

无法在不可搜索的输入流上使用PKZIP加密

该怎么办

var outputStream = new MemoryStream();
using (var zip = new ZipFile())
{
    zip.Password = "123456!";
    var outputStreamFile = new MemoryStream();
    var userId = m_userRepository.GetuserByLogin(this.User.Identity.Name).UserId;

    using (var streamWriter = new StreamWriter(outputStreamFile))
    {
        streamWriter.WriteLine(m_kamikaze2Repository.GetGameById(gameId, userId).Result);

    }
    zip.AddEntry("result_" + gameId, outputStreamFile);
    zip.Save(outputStream);//error

}
Run Code Online (Sandbox Code Playgroud)

Mar*_*age 5

问题是outpuStreamFile将其添加到中时已关闭ZipFileStreamWriter.Dispose会处理流,因此只要移动using语句以确保outputStreamFile在调用时可用zip.Save

另外,添加outputStreamFile到之前,ZipFile您需要倒带。

using (var outputStreamFile = new MemoryStream()) {
  var userId = m_userRepository.GetuserByLogin(this.User.Identity.Name).UserId;
  var streamWriter = new StreamWriter(outputStreamFile);
  streamWriter.WriteLine(m_kamikaze2Repository.GetGameById(gameId, userId).Result);
  outputStreamFile.Seek(0, SeekOrigin.Begin);
  zip.AddEntry("result_" + gameId, outputStreamFile);     
  zip.Save(outputStream);
}
Run Code Online (Sandbox Code Playgroud)