.NET Ionic.Zip:壓縮或未壓縮大小,或偏移量超過最大值
我有以下設置:
- Win2008伺服器
- Ionic.zip 參考模組
- 用於建構 zip 文件的單獨驅動器
- .NET 4.0
Web 應用程序即時建構 zip 包,並允許客戶端下載該包。
這個系統執行得非常好……直到現在。
最近我們添加了一些較大的文件(2GB 到 11GB),這些文件在下載到客戶端之前都需要打包。最初我將這個系統設置為在 C 上發生:(一個錯誤)。馬上,尤其是對於較大的文件,我開始收到“磁碟空間不足”錯誤。我做的第一件事是將系統移動到一個 100GB 的獨立驅動器 (K:) 上工作。現在這些文件已在 Intranet 上發佈到生產環境中,但我仍然收到這些錯誤。
- 我安排了一個每晚清理驅動器的任務,所以即使是 100GB,我也不應該收到錯誤
- C: 和 K: 都有足夠的空間
- 我還不知道是 C: (一個未知的臨時文件夾??) 還是 K: 正在填滿
- 更新 - 查看事件日誌,它是 K: 正在填滿,但是當我檢查它時,它沒有滿……所以我假設臨時文件問題……或者?
有沒有人可以對此有所了解或就發生的故障排除提供建議?
編輯 - - - - - - - - - - - -
我認為我要求的壓縮方法可能與文件大小有關。我現在看到其他錯誤看起來像:
壓縮或未壓縮大小,或偏移量超過最大值。考慮在 ZipFile 實例上設置 UseZip64WhenSaving 屬性。
我嘗試添加
zip.CompressionMethod = Zip64Option.AsNecessary認為 zip64 將是必要的行,但後來我得到了錯誤Unsupported compression method。我不確定這些新資訊可以從哪裡開始。我認為 ZipDotNet 會處理所有這些。由於使用者正在嘗試下載此文件,這變得越來越緊迫。我現在正在開發一個更新檔作為解決方法。
更多編輯——–
當我意識到正常 zip 的大小限制為 4GB 時,有一種 DUH 時刻。Zip64 的大小限制要大得多。
我將該行添加
zip.UseZip64WhenSaving = True到我的程式碼中,這似乎已經解決了這個問題。到目前為止,沒有任何問題。
解決方案圍繞著不注意 zip 文件大小限制。
使用 DotNetZip 壓縮大尺寸文件時,您的 asp.net 編碼中會出現如下錯誤:
- 磁碟空間不足
- 壓縮或未壓縮大小,或偏移量超過最大值。考慮在 ZipFile 實例上設置 UseZip64WhenSaving 屬性
當您看到這些錯誤時,最好通過添加以下行來更改您的 asp 程式碼:
[yourZipReference].UseZip64WhenSaving = Zip64Option.Always這將更改您的程式碼以將文件保存為 zip64 格式,因此您可能需要在進行此更改之前進行文件大小檢查。
還有一行:
[yourZipReference].CompressionMethod = CompressionMethod.BZip2;// or CompressionMethod.Deflate or CompressionMethod.None這將導致模組使用適合這種情況的 zip 壓縮方法,但我還沒有測試過這個。