Я получаю эту ошибку при загрузке файла с 84 МБ (см. Ниже), но когда я загружаю файл размером 60 МБ, он работает нормально. Это происходит только на нашей 32-битной памяти VM объемом до 4 ГБ. На моей 64-битной памяти VM с памятью 8 ГБ он отлично работает даже с 130 МБ-файлом.System.OutOfMemoryException: Исключение при загрузке файла
System.OutOfMemoryException: Исключение типа 'System.OutOfMemoryException' был брошен. в System.IO.BinaryReader.ReadBytes (кол Int32) в CustWeb.Controllers.DownloadsController.Create (Download дл, HttpPostedFileBase файл) в C: \ ... \ CustWeb \ Контроллеры \ DownloadsController.cs: линия 72
Я наблюдал за памятью в диспетчере задач, хотя он не превышает 74% во время всего процесса загрузки.
Это приложение MVC 4 на платформе .NET .NET.
У меня есть максимальные настройки в моем web.config при работе с загрузкой файлов.
<httpRuntime requestValidationMode="4.5" targetFramework="4.5" maxRequestLength="2147483647" executionTimeout="84000" />
...
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147482624" />
</requestFiltering>
</security>
UPDATE Добавление кода в соответствии с просьбой:
public ActionResult Create(Download dl, HttpPostedFileBase file)
{
try
{
using (var binaryReader = new BinaryReader(file.InputStream))
{
dl.FileBytes = binaryReader.ReadBytes(file.ContentLength);
}
dl.FileContentType = file.ContentType;
dl.FileName = file.FileName;
dl.Insert();
Success("<strong>" + dl.Label + "</strong> created and uploaded successfully.");
return RedirectToAction("Index");
}
catch (Exception ex)
{
SelectList list = new SelectList(new DownloadType().GetDownloadTypes(), "ID", "Name");
ViewBag.DownloadTypeList = list;
Error(ex.ToString());
return View(dl);
}
}
Покажите нам свой код. – SLaks
Использование 'BinaryReader' здесь неверно. – leppie
@SLaks - добавлен мой код по вашему желанию. – RichC