Asp.net

.NET Ionic.Zip:壓縮或未壓縮大小,或偏移量超過最大值

  • May 14, 2019

我有以下設置:

  • 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到我的程式碼中,這似乎已經解決了這個問題。到目前為止,沒有任何問題。

解決方案圍繞著不注意 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 壓縮方法,但我還沒有測試過這個。

引用自:https://stackoverflow.com/questions/14901652