上传一个84MB的文件时,出现了以下错误(请参见以下错误),但是当我上传一个约60MB的文件时,一切正常。这仅在我们的32位2008 VM w / 4GB内存上发生。在我的R2 64位VM w / 8GB内存上,即使130MB文件也可以正常工作。
System.OutOfMemoryException:引发类型为'System.OutOfMemoryException'的异常。于 System.IO.BinaryReader.ReadBytes(Int32 count)于 CustWeb.Controllers.DownloadsController.Create(Download dl, HttpPostedFileBase file) 在 c:\...\CustWeb\Controllers\DownloadsController.cs:line 72
我监视任务管理器中的内存,整个上传过程中它从未超过74%。
这是一个基于4.5 .NET框架的MVC 4应用程序。
我在我的web.config中设置了上传文件的最大设置。
<httpRuntime requestValidationMode="4.5" targetFramework="4.5" maxRequestLength="2147483647" executionTimeout="84000" />
...
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147482624" />
</requestFiltering>
</security>
更新 根据要求添加代码:
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);
}
}
BinaryReader
是错误的。 - leppie