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

时间:2019-04-21 10:35:35

标签: c# asp.net selectpdf

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

如果我重新启动服务器,它可以在一段时间内正常工作,但一段时间后会再次出现错误。

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

  

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

     

错误详细信息

     

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

     

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

     

在SelectPdf.HtmlToImage。ᜀ(字符串A_0,字符串A_1,字符串A_2,᥻[]&A_3,ᣰ&A_4)
  在SelectPdf.HtmlToPdf。ᜁ(字符串A_0,字符串A_1,字符串A_2,字符串A_3,布尔值A_4)
  在SelectPdf.HtmlToPdf.ConvertHtmlString(String htmlString,String baseUrl)
  在BusinessLogic.SalaryManager.ConvertToPDF(SalarySlipExtra工资单,字符串标题,字符串模板,字符串baseUrl)
  在BusinessLogic.SalaryManager.PrintSlips(列表{1 Ids, String baseUrl)
at SchoolMS.Web.Controllers.api.Manage.ApproveSalaryController.Post(List
1个ID,布尔值isPrint)

2 个答案:

答案 0 :(得分:0)

此错误代码仅表示未收到预期的响应。强烈建议服务器出现错误,导致服务器无法正确完成PDF创建。

在您的情况下,事情会工作一段时间,然后失败,因此您可能会耗尽创建PDF所需的某些服务器资源。查看服务器事件日志并启用应用程序日志记录,您可能会看到警告或错误消息,它们将为您指明正确的方向。

如果您遇到可重现的失败情况,则可以将调试器附加到服务器上的程序中,并详细查看其失败。

您可以使用sysinternals processExplorer和processMonitor来查看SelectPDF库正在使用哪些资源并观察任何故障。

其他人也报告了类似的问题,并且SelectPDF网站包含一些故障排除提示here

可能会导致您(重复出现)问题的常见服务器端错误是这样的:

  • 内存不足: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角色中运行的版本和打算在WebSites(Azure)中运行的版本

  • 内存不足情况。

答案 1 :(得分:0)

就我而言,“数据传输错误 109”已通过更新到最新的 SelectPdf nuget 版本解决。所以,这是 SelectPdf 库中的一个软件错误。