У меня есть этот метод.
[HttpGet("view/{fileId}/{width}/{height}/{name}")]
public async Task<FileStreamResult> View(Guid fileId, int width, int height, string name)
{
var fileInfo = await _fileViewer.GetImageInfo(fileId, width, height);
FileStream f = new FileStream(fileInfo.FilePath, FileMode.Open);
return File(f, fileInfo.MimeType);
}
, который просто возвращает измененное изображение в браузер. Оно работает. Но, насколько я могу судить, это приводит к утечке памяти.
FileStream f
никогда не удаляется.
Я вижу, как мои серверы так медленно используются.
Если Я добавляю туда оператор using
и получаю сообщение об ошибке, что поток закрывается, ie оператор using закрывается до того, как файл возвращается пользователю.
Как это должно быть сделано правильно?
ОБНОВЛЕНИЕ 1 . Это:
using (FileStream f = new FileStream(fileInfo.FilePath, FileMode.Open))
{
return File(f, fileInfo.MimeType);
}
приводит к
System.ObjectDisposedException: Невозможно получить доступ к удаленному объекту. Имя объекта: «Невозможно получить доступ к закрытому файлу.».