Я пытаюсь разархивировать файл, используя код ниже.Использование памяти в выпуске IIS не выпущено
public static void UnZip(string zipFile, string folderPath)
{
using (ZipArchive zip = new ZipArchive())
{
//Loads the zip file.
zip.Open(Path.GetFullPath(zipFile));
//Saving the contents of zip file to disk.
for (int i = 0; i < zip.Count; i++)
{
using (ZipArchiveItem item = zip[i])
{
if (!Directory.Exists(folderPath))
Directory.CreateDirectory(folderPath);
string itemName = folderPath + item.ItemName;
using (FileStream fs = new FileStream(itemName, FileMode.OpenOrCreate,
FileAccess.ReadWrite))
{
MemoryStream ms = item.DataStream as MemoryStream;
ms.WriteTo(fs);
fs.Flush();
ms.Close();
}
}
}
zip.Close();
}
}
Мой Выпуск:
Я опубликовал свой веб-проект и размещение в IIS Express-8. При вызове этого метода UnZip
использование памяти достигает более 600MB
, и оно никогда не выпадало из метода более одного часа. поэтому, если я снова вызываю тот же метод, я получаю ошибку MemoryOutOfException
, потому что по умолчанию iis express имеет 800MB
, поэтому я получаю ошибку.
Я не хочу увеличивать объем памяти IIS Express
. Может быть, я допустил ошибку в своем коде, но я не могу найти проблему.
Помогите найти проблему и решить мою проблему.
Нет смысла называть 'fs.Dispose()' когда вы инициализируете 'fs' в блоке' using', который автоматически вызовет 'Dispose()' автоматически. – haim770
Оберните свой MemoryStream с помощью блока – Sievajet
Я тоже попытался в этом случае .... но не работает @sievajet – MarHserus