首页 > 解决方案 > EvoPDF 和 ASP.NET Core 的 OutOfMemory 异常

问题描述

我最近将一个 ASP.NET Web 项目移植到 ASP.NET Core (net5.0)。

在这个项目中,静态 HTML 文件被转换为 PDF 文件并存储在数据库中。我们为此使用 EvoPDF,在我们切换到 net5.0 之前一切都很好。

现在我们会不时收到此错误:

System.Exception: Could not create image object. Out of memory.
         at EvoPdf.HtmlToImageConverter.?(String A_0, String A_1, String A_2, ?& A_3, Hashtable& A_4)
         at EvoPdf.HtmlToPdfConverter.?(String A_0, String A_1, String A_2, String A_3, Boolean A_4)
         at EvoPdf.HtmlToPdfConverter.?(Stream A_0, String A_1, String A_2, String A_3, String A_4, Boolean A_5)
         at EvoPdf.HtmlToPdfConverter.ConvertHtmlToStream(String htmlString, String baseUrl, String internalLinksBaseUrl, Stream outPdfStream)
         at EvoPdf.HtmlToPdfConverter.ConvertHtmlToStream(String htmlString, String baseUrl, Stream outPdfStream)

该项目构建为 64 位二进制文​​件。它在 IIS 上运行,我们检查它确实在 64 位池中运行。应用程序本身使用大约 200 - 400 MB 内存,并且在机器上有大量可用内存。所以这应该不是问题。

我们的 html 文件不是很花哨,它发生在小页面和大页面上。


var evo = new EvoPdf.HtmlToPdfConverter();
//...
using (var stream = new MemoryStream())
{
    string baseUrl = "";
    evo.ConvertHtmlToStream(html, baseUrl, stream);
    return stream.ToArray();
}

所述域逻辑类以瞬态生命周期和所有依赖项(包括 pdf 创建)插入。我们检查了强制依赖项,但没有找到。

知道我们不知道该怎么做,因为异常只是偶尔发生,我们无法在开发机器上重现它。

关于做什么的任何想法?

标签: c#asp.net-coreout-of-memoryevopdf

解决方案


推荐阅读