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)上它会创建文件并且可以通过浏览器下载,但是在虚拟主机服务器(旧的 Win08 R1)上它也会创建文件,但是如果我想下载它,会抛出拒绝访问异常. 不同之处在于文件权限。在 R2 服务器上可以访问文件应用程序池标识(例如“MyWebSite”),但在 R1 上只有具有“特殊权限”的 IIS_IUSRS。

4

1 回答 1

0

确保在 IIS 配置中为 .gz 扩展添加了 MIME 类型。我认为这可能会导致您所指的问题。

于 2009-11-12T14:11:39.727 回答