c# - 正确配置以增加 Umbraco 处理内存
问题描述
在处理 1.6GB 等大文件时,我不断收到 SystemOutOfMemoryException。我只是想知道我在 web.config 中的配置是否正确。下面是我为支持大于 1GB 的大文件而修改的代码行
<httpRuntime requestValidationMode="2.0" enableVersionHeader="false" maxRequestLength="457286400" executionTimeout="3600" targetFramework="4.5" fcnMode="Single" />
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="3294967295" />
</requestFiltering>
</security>
我不确定这是否正确。我还通过工具-> 选项-> 项目和解决方案-> Web 项目-> “使用 65 位版本的 IIS”将 IIS 服务器更改为在 x64 中运行
我不确定我错过了什么,但即使我已经增加了内存大小,我仍然让系统内存不足异常
更新:只要客户需要,我正在处理像 .mp4 文件这样的大文件或任何类型的文件,无论类型如何。
此外,我没有使用前端上传文件。我们所做的是通过 Filezilla 上传大文件,如果文件被上传到服务器,我们使用 Umbraco MediaService 来处理这个文件,以便在媒体页面中有一个条目。我们也在使用 Hangfire 来触发我们的后台服务来处理 MediaService
解决方案
接受这样的大文件并不是最佳做法。例如,这提供了执行 Ddos 攻击的可能性。此外,您将需要大量内存,因为文件将在内存中处理,然后再将其保存到磁盘,因此存在内存问题。
更好的解决方案是用 javascript 将它们分块并发送小数据包,然后将它们缝合在一起服务器端。关于如何自己构建这个有一个很好的解释:https ://www.dotnetcurry.com/aspnet-mvc/893/upload-big-files-aspnet-mvc-azure-storage (取决于你如何处理你的会话, 将其添加到会话中可能无法解决您的内存问题。我想您需要将其保存到磁盘)
与 memroy 异常无关,但请确保将其包装在 a 中<location path="xxx/yyy"> your web.config stuff </location>
,以便只有此 URL 才能接受大文件。
推荐阅读
- python - Flask 扩展、上下文和 Neo4j
- java - 传输文件
- yii2 - 在 Yii2 中上传文件(word、pdf、excel)?
- mongodb - 在猫鼬承诺之间传递数据?
- javascript - 参考错误:未定义响应AngularJs
- python - 如何从 QLineEdit 继承 returnPressed() 到 QPlainTextEdit
- ruby - 为什么我的 Ruby 脚本中的 shell 变量不可见?
- c++ - 符号 y 无法解析
- javascript - 将cookie设置为菜单jquery
- azure-devops - 使用 VSTS 的 Fastlane 发布到 TestFlight