11

私は次の設定をしています:

  • Win2008 サーバー
  • Ionic.zip 参照モジュール
  • zip ファイルをビルドするための別のドライブ
  • .NET 4.0

Web アプリは、オンザフライで zip パッケージをビルドし、クライアントがパッケージをダウンロードできるようにします。

このシステムは素晴らしく機能してきました...今まで。

最近、クライアントにダウンロードする前にすべてをパッケージにまとめる必要があるいくつかの大きなファイル (2GB から 11GB) を追加しました。もともと、私はこのシステムをすべて C: 上で実行するようにセットアップしていました (間違い)。すぐに、特に大きなサイズのファイルの場合、「ディスクに十分なスペースがありません」というエラーが発生し始めました。私が最初にしたことは、システムを 100GB の別のドライブ (K:) で動作するように移動することでした。これらのファイルがイントラネット上で本番環境にリリースされた今でも、これらのエラーが発生します。

  1. 毎晩ドライブをクリーンアップするタスクがスケジュールされているため、100 GB であってもエラーは発生しないはずです
  2. C: と K: の両方に十分な余裕があります
  3. いっぱいになっているのが C: (不明な一時フォルダー??) なのか、K: なのかはまだわかりません。
  4. 更新 - イベント ログを見ると、いっぱいになっているのは K: ですが、チェックするといっぱいではありません...だから、一時ファイルの問題を想定しています...または??

これに光を当てたり、何が起こっているかのトラブルシューティングについてアドバイスしたりできる人はいますか?

編集 - - - - - - - - - - - -

私がファイルサイズを求めている圧縮方法には何かがあるのではないかと思います。次のような他のエラーが表示されるようになりました。

圧縮または非圧縮サイズ、またはオフセットが最大値を超えています。ZipFile インスタンスに UseZip64WhenSaving プロパティを設定することを検討してください。

zip.CompressionMethod = Zip64Option.AsNecessaryzip64が必要になると思って一行追加してみたところ、エラーになってしまいましたUnsupported compression method。この新しい情報でどこに行けばいいのかわかりません。ZipDotNet がこれをすべて処理してくれると思いました。

ユーザーがこのファイルをダウンロードしようとしているため、これは緊急になっています。現在、回避策としてパッチに取り組んでいます。

もっと編集--------------------

通常のzipには4GBのサイズ制限があることに気付いたとき、一種の当たり前の瞬間がありました. 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 に答える