c# - 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 创建)插入。我们检查了强制依赖项,但没有找到。
知道我们不知道该怎么做,因为异常只是偶尔发生,我们无法在开发机器上重现它。
关于做什么的任何想法?
解决方案
推荐阅读
- python - 将 Soap XML 请求转换为 Zeep 的字典
- reactjs - undefined 不是对象(评估“this.state.user.avatar”)
- angular - 错误预期 Spy 已被调用,即使该方法在测试方法中被监视
- terraform - 在 Terraform 中,封装“#{variableName}”语法是什么意思?
- c# - 如何在方法之间传递数组?
- python - Python 不会向控制台窗口输出打印语句
- r - 为什么在对我的数据运行 1000 倍自举 t 检验时,p 值的分布会在零附近达到峰值?
- python - 最小二乘法 scipy.sparse.linalg.lsqr 返回错误的精确解
- firebase - Firebase ML Kit 能否用于检测一张照片包含另一张照片中的对象的可能性有多大?
- amazon-web-services - 返回执行多个 DynamoDB 放置项的 Python lambda 中的 HTTP 响应