【发布时间】:2014-07-30 01:41:36
【问题描述】:
我正在将小型 pdf 文件加载到缓冲区中并获取 OutOfMemoryEception。文件大小 220KB 工作正常,我测试的下一个大小是 4,50MB,这个文件抛出异常。最大文件大小是多少,我可以做些什么来更改最大大小? 4,5MB 不算多 :-)
这是相关代码:
ListViewDataItem dataItem = (ListViewDataItem)e.Item;
int i = dataItem.DisplayIndex;
byte[] buffer = File.ReadAllBytes(Session["pdfFileToSplit"].ToString());
string unique = Guid.NewGuid().ToString();
Session[unique] = buffer;
Panel thumbnailPanel = (Panel)e.Item.FindControl("thumbnails");
Thumbnail thumbnail = new Thumbnail();
thumbnail.SessionKey = unique;
thumbnail.Index = i+1;
thumbnail.DPI = 17;
thumbnail.BorderColor = System.Drawing.Color.Blue;
thumbnailPanel.Controls.Add(thumbnail);
好的,我刚刚看到了一些非常神秘的东西(对我来说)。我上传了一个低于 10MB 的文件,并查看了 IIS 服务器的已用内存(w3wp.exe),没有发生任何戏剧性的事情,增加了几 MB,减少了一些,一切正常。比我用 12MB 的文件尝试过同样的事情。一开始看起来是一样的,但是突然之间,w3wp.exe 的已用内存突然激增到 1.5GB,然后服务器崩溃了......
【问题讨论】:
-
我正在使用一个组件,该组件需要将文件保留在会话中 tallcomponents.com/pdfthumbnail.aspx
-
我不知道这个组件。无论哪种方式,会话状态都不是为了保存大量数据而构建的。您应该重新考虑将缩略图写入临时文件,并且只在会话中保留这些文件的路径。
标签: c# asp.net out-of-memory