0

GZipでファイルを圧縮する方法があります:

public static void CompressFile(string filePath)
{

      string compressedFilePath = Path.GetTempFileName();
      using (FileStream compressedFileStream = new FileStream(compressedFilePath, FileMode.Append, FileSystemRights.Write, FileShare.Write, BufferSize, FileOptions.None))
      {

        GZipStream gzipStream = new GZipStream(compressedFileStream, CompressionMode.Compress);
        using (FileStream uncompressedFileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
        {
          int offset = 0;
          while (true)
          {
            byte[] buffer = new byte[offset + BufferSize];
            int bytesRead = uncompressedFileStream.Read(buffer, offset, BufferSize);
            if (bytesRead == 0)
              break;

            gzipStream.Write(buffer, offset, bytesRead);
            offset += bytesRead;
          }
        }
        gzipStream.Close();
      }

      File.Delete(filePath);
      File.Move(compressedFilePath, filePath);
 }

私の問題は、テスト サーバー (Win08 R2) ではファイルが作成され、ブラウザー経由でダウンロードできることですが、Web ホスティング サーバー (古い Win08 R1) でもファイルが作成されますが、ダウンロードしたい場合はアクセス拒否例外がスローされます。 . 違いはファイル許可にあります。R2 サーバーではファイル アプリケーション プール ID (「MyWebSite」など) にアクセスできますが、R1 では「特別なアクセス許可」を持つ IIS_IUSRS のみです。

4

1 に答える 1

0

IIS 構成で .gz 拡張子に MIME タイプが追加されていることを確認します。これがあなたが言及している問題を引き起こす可能性があると思います。

于 2009-11-12T14:11:39.727 に答える