我正在使用"SelectPdf Html To Pdf Converter for .NET – Community Edition"来生成pdf文件。在实时服务器上一切正常。当我尝试生成pdf文件时,突然开始出现错误。
如果我重新启动服务器,它可以正常工作一段时间,但一段时间后错误再次出现。
我正在使用最新版本的库。以下是错误的完整详细信息
无法获取转换结果标头。数据传输错误。数据传输错误 109
错误详细信息
系统异常
无法获取转换结果标头。数据传输错误。数据传输错误 109系统异常:无法获取转换结果标头。数据传输错误。数据传输错误 109
at SelectPdf.HtmlToImage.ᜀ(String A_0, String A_1, String A_2, []& A_3, ᣰ& A_4)at SelectPdf.HtmlToPdf.ᜁ(String A_0, String A_1, String A_2, String
A_3, Boolean A_4)at
SelectPdf.HtmlToPdf.ConvertHtmlString(String htmlString, String baseUrl)at BusinessLogic.SalaryManager.ConvertToPDF(
SalarySlipExtra salarySlip, String title, String template, String baseUrl)
at BusinessLogic.SalaryManager.PrintSlips(List1 Ids, String baseUrl)
1 ids, 布尔值是打印)
at SchoolMS.Web.Controllers.api.Manage.ApproveSalaryController.Post(List
此错误代码仅表示未收到预期的响应。它强烈建议服务器上的错误阻止了服务器正确完成 PDF 创建。
在您的情况下,事情会工作一段时间然后失败,因此您可能用完了创建 PDF 所需的一些服务器资源。查看服务器事件日志并启用应用程序日志记录,您可能会看到警告或错误消息,这些警告或错误消息将为您指明正确的方向。
如果您有可重现的故障方案,则可以将调试器附加到服务器上的程序,并详细观察其失败。
您可以使用 sysinternals processExplorer 和 processMonitor 来查看 SelectPDF 库正在使用哪些资源并观察任何故障。
其他人也报告了类似的问题,SelectPDF 站点在此处包含一些故障排除提示。
可能导致(重复)问题的常见服务器端错误如下所示:
内存不足:
System.OutOfMemoryException was thrown
文件被另一个进程锁定:
ERROR_SHARING_VIOLATION
。检查服务器防病毒排除列表,并确保从实时扫描中排除必要的文件。超出了非常大的网页的加载时间。尝试增加超时:
converter.Options.MaxPageLoadTime = 120;
要转换的页面的 URL 在服务器上未正确解析,即使它在客户端上正确解析也是如此。
文件大小可能太大。如果这是原因,则对 web.config 的更改可能会解决问题。
文件大小过大的可能解决方案:
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1000000000"/>
</requestFiltering>
</security>
在 PDF 创建永远不起作用的情况下,需要考虑以下一些其他事项:
由于
Error_Access_Denied
而失败。服务器上的权限不正确(不足)。特别是,Select.Html.dep需要执行权限。PDF 创建可能发生在工作线程中,执行上下文必须允许这样做。
转换器版本错误(32 位与 64 位)。
服务器上缺少.dat或.xml文件
信任问题(
<system.web> <trust level="Full" />
尝试)混合使用要在 Web 角色中运行的版本和打算在网站 (Azure) 中运行的版本
内存不足情况。
就我而言,"数据传输错误 109"已通过更新到最新的 SelectPdf nuget 版本得到解决。所以,这是SelectPdf库中的一个软件错误。
我们正在管理一个遗留系统,突然出现了可怕的109错误,错误与EvoPdf.HtmlToImageConverter有关。事实证明,它与通过SSL连接传递的图像有关。一旦我们将图像 URL 更改为非 SSL,它就只是......工作!