ASP.net应用程序中的System.OutofMemory异常

时间:2010-03-05 02:49:54

标签: asp.net vb.net

我有一个在VB.net开发的ASP.net 3.5 Web应用程序我正在使用iTextsharp组件从ASP.net页面生成PDF文档。

我正在检索存储在数据库中的PDF文档并将它们合并为一个PDF。使用memorystream。

但是当我尝试合并大约1000个pdf,每个包含2个页面时,我得到Outofmemory异常。

有任何建议,您认为这是正确的做法吗?

请帮忙

2 个答案:

答案 0 :(得分:1)

我认为正确的方法是重新思考如何实现目标。

为什么你有一个网页将1000个PDF编译成一个PDF?

这不能被设置为创建这个巨大PDF的“最新版本”的工作,每天运行一次,而您只是提供最新版本的页面吗?

是的,即使在4位RAM的64位上也会运行缓慢,因为这不是Web请求的工作,而是某种类型的预定服务的工作。

更新:为了回复您的评论,您可以创建一个临时加载页面,说明您的文件正在生成,并将工作推送到后台线程。线程完成后,加载页面将开始下载完整文档。除非你能在我的评论中做到我的建议,否则我怀疑你可以加快速度。你唯一能做的就是让等待更加用户友好。

也许甚至使用一点AJAX并给它们一个状态栏,其中包含“合并第106页的1000”。他们会看到进步并且不那么沮丧。

更强大的机器是唯一可以提供帮助的方法,需要64位才能避免内存不足。

答案 1 :(得分:1)

尽管它会非常慢(Research Async ASP.NET Pages),为什么不将文件合并到文件系统而不是MemoryStream?

然后,当您完成后,您可以使用Response.TransmitFile(string filename)