我想以mvc下载文件,大小为200mb
发生以下错误:
System.OutOfMemoryException:类型' System.OutOfMemoryException'的异常被抛出
我的代码是:
public FileResult Download(string name)
{
var videoFilePath = HostingEnvironment.MapPath("~/VideoFile/" + name + ".mp4");
//The header information
var file = new FileInfo(videoFilePath);
//Check the file exist, it will be written into the response
if (file.Exists)
{
return File(videoFilePath, System.Net.Mime.MediaTypeNames.Application.Octet,
file.Name);
}
return null;
}
文件大小较小时不会发生错误
为什么?
答案 0 :(得分:2)
最近,在使用Visual Studio 2013处理Web应用程序时,我一直收到System.OutOfMemoryException异常。
完整的异常消息标题如下:
System.OutOfMemoryException抛出了类型'System.OutOfMemoryException'的异常。
要解决此问题,我必须重新启动Visual Studio或转到Windows任务管理器并终止IIS Express进程。
由于与应用程序的内存消耗相关的各种原因,可能会发生此错误。看着我的本地机器内存,总是有内存可用!那是什么原因?
事实证明,Visual Studio默认使用IIS Exoress 32位版本,而64位版本可用于那里!因此,围绕您的工作转到以下路径并使Visual Studio使用64位版本的IISExpress。
工具|选项|项目和解决方案| Web Projects =>将64位版本的IIS Express用于网站和项目
显然幕后的Visual Studio会在Windows注册表中更改一个标记,该标记可以在此路径中找到密钥。
HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 12.0 \ WebProjects - > Use64BitIISExpress 强>
答案 1 :(得分:1)
我相信您的MVC 4项目需要更新以支持200 MB文件,而且需要更新IIS以支持200 MB文件。
要在IIS级别更改它,我认为将此添加到您的web.config文件应该可以。 (另)
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="209715200"/>
</requestFiltering>
</security>
</system.webServer>
要从另一个SO post拉出,请将以下内容添加到您的web.config文件
<location path="File">
<system.web>
<httpRuntime executionTimeout="60" maxRequestLength="4096" />
</system.web>
</location>
<location path="Picture">
<system.web>
<httpRuntime executionTimeout="60" maxRequestLength="1024" />
</system.web>
</location>
“File”和“Picture”是您的控制器名称。
在该链接上,接受的答案还解决了上传超时问题,对于200 MB的文件也可能存在问题。
希望这有帮助!