Как избежать OutOfMemoryException при использовании BinaryReader

Привет, я работаю в приложении, где мы предоставляем пользователю возможность изменить изображение своего профиля.

Я использую элемент управления загрузкой файлов для выбора файлов. Это позволяет максимум 100 МБ.

Но я ограничиваю размер изображения 30 Мб. Изображения загружаются до 20 МБ без проблем. Когда он превышает 20 МБ, отображается исключение OutOfMemoryException. Я использую BinaryReader для сохранения изображений.

var file = context.Request.Files[0];
if (!Directory.Exists(Folder))
{
    Directory.CreateDirectory(Folder);
}

if (file.ContentLength != 0)
{
    if (Directory.Exists(targetFolder + "\\" + context.Request["Name"]) == false)
    {
        Directory.CreateDirectory(targetFolder + "\\" + context.Request["Name"]);
    }

    var binaryReader = new BinaryReader(file.InputStream);
    var memoryBytes = binaryReader.ReadBytes(file.ContentLength);
    using (var memoryStream = new MemoryStream(memoryBytes))
    {
        var imageStream = Image.FromStream(memoryStream);
        imageStream.Save(targetFolder + "\\" + context.Request["Name"] + "\\" + "picture" + ".png" , ImageFormat.Png);
    }
}

Я сделал какую-нибудь ошибку ?? Или предложите любой другой способ сохранить изображение.

Заранее спасибо !!! Любая помощь будет оценена.


person Shesha    schedule 15.12.2015    source источник
comment
Возможно, этот ответ дает вам некоторое представление о stackoverflow.com/a/8613300/2263683   -  person Alex Jolig    schedule 15.12.2015
comment
Вероятно, не решит вашу проблему, но разве вы не должны закрыть это BinaryReader? Или используйте его в выражении using. Совершенно уверен, что он реализует IDisposable, так что у вас может быть утечка.   -  person Pierre-Luc Pineault    schedule 15.12.2015
comment
Я использовал BinaryReader, но проблема не устранена. У меня такое же исключение.   -  person Shesha    schedule 15.12.2015