我有一个ASP.Net MVC应用程序,允许用户上传图像.当我尝试上传一个非常大的文件(400MB)时,我收到一个错误.
我认为我的图像处理代码(家庭酿造)非常低效,所以我决定尝试使用第三方库来处理图像处理部分.
因为我正在使用TDD,所以我想先写一个失败的测试.但是当我使用相同的大文件测试控制器动作时,它能够毫无困难地完成所有图像处理.
我得到的错误是“内存不足”.
我确定我的代码可能使用了比它需要的更多的内存,但我只是想知道为什么我的测试通过了.
另一个区别是我使用的SWFUpload不用于测试.这可能是原因吗?
解决方法
可以在web.config或machine.config中配置内存限制,或者两者都配置.
在web.config中,该部分是:
<httpRuntime executionTimeout="3600" maxRequestLength="102400" />
在machine.config中,该部分也可以是httpRunTime部分,类似于:
<httpRuntime executionTimeout="90" maxRequestLength="4096" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" />
使用processModel部分,aspnet进程也可以限制为总内存的百分比,请参阅:
http://msdn.microsoft.com/en-us/library/7w2sway1.aspx
我遇到过这些设置引起的类似问题.特别是ProcessModel memorylimit属性.