System.OutOfMemoryException:类型' System.OutOfMemoryException'的异常。被扔了。在mvc 4中下载大文件

时间:2014-04-08 08:32:56

标签: asp.net-mvc-4 download large-files

我想以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;
        }

文件大小较小时不会发生错误

为什么?

2 个答案:

答案 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用于网站和项目

enter image description here

显然幕后的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的文件也可能存在问题。

希望这有帮助!