Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iis winnovative pdf-内存不足和其他随机异常_Iis_Pdf_Memory_Memory Leaks_Winnovative - Fatal编程技术网

Iis winnovative pdf-内存不足和其他随机异常

Iis winnovative pdf-内存不足和其他随机异常,iis,pdf,memory,memory-leaks,winnovative,Iis,Pdf,Memory,Memory Leaks,Winnovative,我们有一个asp.NET3.5应用程序,允许用户生成许多图表并通过pdf导出。这对于较小的PDF(少于100页)很好,但是当我们做较大的PDF时,会出现随机错误。我们看到的一些错误包括: --System.OutOfMemoryException --无法呈现HTML字符串。无法从html字符串获取图像。尝试将LoadHtmlConcurrencyLevel设置为1。。 --克隆错误。内存不足。。 --等待转换完成的超时。 --System.OutOfMemoryException:内存

我们有一个asp.NET3.5应用程序,允许用户生成许多图表并通过pdf导出。这对于较小的PDF(少于100页)很好,但是当我们做较大的PDF时,会出现随机错误。我们看到的一些错误包括:

--System.OutOfMemoryException
--无法呈现HTML字符串。无法从html字符串获取图像。尝试将LoadHtmlConcurrencyLevel设置为1。。
--克隆错误。内存不足。。
--等待转换完成的超时。
--System.OutOfMemoryException:内存不足。 在System.Drawing.Image.FromStream(Stream Stream,Boolean useEmbeddedColorManagement,Boolean validateImageData) 在System.Drawing.Image.FromStream(Stream)中

如果我多次运行大报告,通常会出现不同的异常。有时我会让IIS崩溃,我必须进行IIS设置以使应用程序恢复

下面是我们运行的代码。我们用图表(png图像)创建PDF文档,然后将其导出到字节数组,并将其放入内存流中。我们将内存流传递给一个函数,该函数旋转一些图像等,然后调用doc.save方法将其导出

Dim mainPageBytes() As Byte = PDF.GetBytes
Dim stream As New System.IO.MemoryStream(mainPageBytes)
Dim existingDoc As New PDFCreator.Document(stream)
Dim doc As PDFCreator.Document = GetDocument(mainPageBytes,    GetChartingPageNumbers(PDF.ConversionSummary), pageOrientation, user, existingDoc)
doc.Save(response, True, Me.DocumentName)

IIS对在其上运行的脚本(内存和运行时)有限制。您的脚本可能超出了运行时和/或内存限制。这些可以在IIS配置设置中设置,但它们的存在通常是有原因的(以防止单个脚本耗尽服务器上的所有内存,或防止脚本永远在无限循环中运行,除非重新启动IIS,否则无法退出无限循环)


打开调试(禁用这些限制),并通过将
queryObj(“PeakWorkingSetSize”)
输出到日志文件来确定脚本崩溃时实际使用的内存量。

是否按照产品文档中的建议在64位进程中运行转换器?你可以查一下电话号码。在32位模式下,.NET的可用内存非常有限。在IIS中,您必须确保32位应用程序标志为false

此外,为了减少转换包含大量和大型图像的HTML页面时的内存使用,您可以将ImagesCalingEnabled属性设置为false。您可以在中找到此功能的完整示例代码