Ошибка HTTP 401.3 в созданном файле .gz - PullRequest
0 голосов
/ 12 ноября 2009

У меня есть метод для сжатия файла с помощью 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 с «Специальным разрешением».

1 Ответ

0 голосов
/ 12 ноября 2009

Убедитесь, что у вас добавлен тип MIME для расширения .gz в конфигурации IIS. Я думаю, что это может вызвать проблему, о которой вы говорите.

...