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