11

我有以下设置:

  • Win2008服务器
  • Ionic.zip 参考模块
  • 用于构建 zip 文件的单独驱动器
  • .NET 4.0

Web 应用程序即时构建 zip 包,并允许客户端下载该包。

这个系统运行得非常好……直到现在。

最近我们添加了一些较大的文件(2GB 到 11GB),这些文件在下载到客户端之前都需要打包。最初我将这个系统设置为在 C 上发生:(一个错误)。马上,尤其是对于较大的文件,我开始收到“磁盘空间不足”错误。我做的第一件事是将系统移动到一个 100GB 的独立驱动器 (K:) 上工作。现在这些文件已在 Intranet 上发布到生产环境中,但我仍然收到这些错误。

  1. 我安排了一个每晚清理驱动器的任务,所以即使是 100GB,我也不应该收到错误
  2. C: 和 K: 都有足够的空间
  3. 我还不知道是 C: (一个未知的临时文件夹??) 还是 K: 正在填满
  4. 更新 - 查看事件日志,它是 K: 正在填满,但是当我检查它时,它没有满......所以我假设临时文件问题......或者?

有没有人可以对此有所了解或就发生的故障排除提供建议?

编辑 - - - - - - - - - - - -

我认为我要求的压缩方法可能与文件大小有关。我现在看到其他错误看起来像:

压缩或未压缩大小,或偏移量超过最大值。考虑在 ZipFile 实例上设置 UseZip64WhenSaving 属性。

我尝试添加zip.CompressionMethod = Zip64Option.AsNecessary认为 zip64 将是必要的行,但后来我得到了错误Unsupported compression method。我不确定这些新信息可以从哪里开始。我认为 ZipDotNet 会处理所有这些。

由于用户正在尝试下载此文件,这变得越来越紧迫。我现在正在开发一个补丁作为解决方法。

更多编辑--------

当我意识到常规 zip 的大小限制为 4GB 时,有一种 DUH 时刻。Zip64 的大小限制要大得多。

我将该行添加zip.UseZip64WhenSaving = True到我的代码中,这似乎已经解决了这个问题。到目前为止,没有任何问题。

4

1 回答 1

11

解决方案围绕着不注意 zip 文件大小限制。

使用 DotNetZip 压缩大尺寸文件时,您的 asp.net 编码中会出现如下错误:

  1. 磁盘空间不足
  2. 压缩或未压缩大小,或偏移量超过最大值。考虑在 ZipFile 实例上设置 UseZip64WhenSaving 属性

当您看到这些错误时,最好通过添加以下行来更改您的 asp 代码:

[yourZipReference].UseZip64WhenSaving = Zip64Option.Always

这将更改您的代码以将文件保存为 zip64 格式,因此您可能需要在进行此更改之前进行文件大小检查。

还有一行:

[yourZipReference].CompressionMethod = CompressionMethod.BZip2;// or CompressionMethod.Deflate or CompressionMethod.None

这将导致模块使用适合这种情况的 zip 压缩方法,但我还没有测试过这个。

于 2013-02-15T21:21:14.977 回答