C#, ZipArchive, невозможно открыть с помощью WinRAR - архив поврежден

Создаю архив с целью вернуть его клиенту в ответ на HTTP-запрос. Архив скачивается, однако открывается только с помощью 7Zip. WinRAR или Goole Files на смартфоне сообщают о том, что архив поврежден или имеет неизвестный формат. Вот такой код формирует архив:

введите сюда описание изображения

Подскажите пожалуйста, что я делаю не так? Или ZipArchive не будет работать? Цель - передавать клиенту несколько файлов через браузер как на компьютере, так и на мобильных устройствах.


Ответы (1 шт):

Автор решения: Bald

Ниже пример того как я создаю архив для того что бы с сервера отдать клиенту несколько файлов, сформированный архив открывается как при при помощи 7z архиватора так и через проводник системы, WinRar отсутствует, но думаю тоже должен работать

public static FileInfo CreateArchive(this DirectoryInfo directory)
{
    var archive = Path.GetTempFileName();
    try
    {
        using (var fs = new FileStream(archive, FileMode.OpenOrCreate))
        using (var zip = new ZipArchive(fs, ZipArchiveMode.Create, false, Encoding.GetEncoding("cp866")))
        {
            foreach (var file in directory.EnumerateFiles("*.*", SearchOption.AllDirectories))
            {
                var dstFile = file.FullName.Replace(directory.FullName, "").TrimStart('\\');
                zip.CreateEntryFromFile(file.FullName, dstFile);
            }
        }
        return new FileInfo(archive);
    }
    catch (Exception)
    {
        throw;
    }
    finally
    {
        directory.Delete(true);
    }
}
→ Ссылка