【问题标题】:Out of memory exception when dowloading file (DevExpress Filemanager)下载文件时出现内存不足异常(DevExpress 文件管理器)
【发布时间】:2019-02-18 22:15:41
【问题描述】:

我正在使用 DevExpress,在服务器端我有以下内容:

var fileStreamResult = FileManagerExtension.DownloadFiles(settings, provider, FileManagerFileDownloadingEventHandler);

提供者是 AzureProvider。设置如下:

settings.SettingsEditing.AllowDownload = true;
settings.Settings.AllowedFileExtensions = new[] {".avi", ".mov"};

现在,如果我下载一个大约 30 MB 的文件,它可以正常工作,但是当我尝试使用一个 200 MB 的文件时,.DownloadFiles 返回 null。

此外,当我查看我看到的第一次机会异常时:

System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.at System.IO.MemoryStream.set_Capacity(Int32 value)

我不知道问题出在哪里,但我还在我的配置文件中设置了以下内容:

  <requestFiltering>
    <requestLimits maxAllowedContentLength="30000000" />
  </requestFiltering>

我使用上述值添加了额外的零,但仍然没有运气。

有人有什么想法吗?谢谢。

编辑:请注意上传 200MB 即可。下载时出现问题

【问题讨论】:

  • 谢谢@niks,但我的问题是下载。上传 200 MB 就可以了。
  • 异常可能意味着以下两种情况之一:当 MemoryStream 尝试分配内存时(我假设它想要分配与文件大小一样多的内存,在本例中为 200MB),要么没有足够的空闲内存,或者大对象堆太碎片化,运行时无法找到所需大小的连续空闲内存空间。由您决定到底是什么原因:分析您的程序,在任务管理器中查看程序的内存消耗,在尝试下载之前尝试对大型对象堆进行碎片整理/压缩,等等......
  • @elgonzo,感谢您的建议。我尝试了 GCLargeObjectHeapCompactionMode.CompactOnce,然后进行了收集并得到了相同的结果。内存方面,我有 32GB RAM。
  • 你安装了多少内存根本不相关。有多少 RAM 是免费/可用很重要...

标签: c# .net devexpress devexpress-mvc


【解决方案1】:

感谢 DevExpress 的支持,他们强调这是因为 IIS Express 内存不足,因为它可能作为 32 位进程运行。因此,将 Visual Studio 更改为使用 64 位就可以了。希望这对将来的某人有所帮助:

How to change Visual Studio option to use the 64-bit version of IIS Express

【讨论】:

    猜你喜欢
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    相关资源
    最近更新 更多