9

我正在使用“SelectPdf Html To Pdf Converter for .NET – Community Edition”来生成 pdf 文件。Live 服务器上一切正常。当我尝试生成 pdf 文件时,突然开始出现错误。

如果我重新启动我的服务器,它可以正常工作一段时间,但一段时间后错误又开始出现。

我正在使用最新版本的库。以下是错误的完整细节

无法获取转换结果标头。数据传输错误。数据传输错误 109

错误详情

System.Exception
无法获取转换结果标头。数据传输错误。数据传输错误 109

System.Exception:无法获取转换结果标头。数据传输错误。数据传输错误 109

在 SelectPdf.HtmlToImage.ᜀ(String A_0, String A_1, String A_2, ᥻[]& A_3, ᣰ& A_4)
在 SelectPdf.HtmlToPdf.ᜁ(String A_0, String A_1, String A_2, String A_3, Boolean A_4)
在 SelectPdf .HtmlToPdf.ConvertHtmlString(String htmlString, String baseUrl)
at BusinessLogic.SalaryManager.ConvertToPDF(SalarySlipExtra SalarySlip, String title, String template, String baseUrl)
at BusinessLogic.SalaryManager.PrintSlips(List 1 ids, Boolean isPrint)1 Ids, String baseUrl)
at SchoolMS.Web.Controllers.api.Manage.ApproveSalaryController.Post(List

4

2 回答 2

3

此错误代码仅表示未收到预期的响应。它强烈表明服务器上的错误导致服务器无法正确完成 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) 中运行的版本

  • 内存不足的情况。

于 2019-05-08T21:25:02.003 回答
1

在我的情况下,通过更新到最新的 SelectPdf nuget 版本解决了“数据传输错误 109”。因此,这是 SelectPdf 库中的一个软件错误。

于 2021-04-18T09:43:54.443 回答