Не удается удалить временные файлы после возврата FileStream
У меня есть функция в приложении C # MVC, которая создает временный каталог и временный файл, затем открывает файл с помощью FileStream, возвращает FileStream вызывающей функции, а затем должен удалить временные файлы. Однако я не знаю, как удалить временный каталог и файл, потому что он всегда выдает ошибку, говоря, что «процесс не может получить доступ к файлу, потому что он используется другим процессом». Это то, что я пробовал, но FileStream все еще использует временный файл в блоке finally. Как я могу вернуть FileStream и удалить временные файлы?
public FileStream DownloadProjectsZipFileStream()
{
Directory.CreateDirectory(_tempDirectory);
// temporary file is created here
_zipFile.Save(_tempDirectory + _tempFileName);
try
{
FileStream stream = new FileStream(_tempDirectory + _tempFileName, FileMode.Open);
return stream;
}
finally
{
File.Delete(_tempDirectory + _tempFileName);
Directory.Delete(_tempDirectory);
}
}
Функция, к которой возвращается FileStream, выглядит следующим образом:
public ActionResult DownloadProjects ()
{
ProjectDownloader projectDownloader = new ProjectDownloader();
FileStream stream = projectDownloader.DownloadProjectsZipFileStream();
return File(stream, "application/zip", "Projects.zip");
}
Обновить: Я забыл упомянуть, что размер почтового файла составляет 380 МБ. Я получаю исключение системы из памяти при использовании MemoryStream.