我正在使用"SelectPdf Html To Pdf Converter for .NET – Community Edition"生成pdf文件。在Live服务器上一切正常。当我尝试生成pdf文件时,突然出现错误。
如果我重新启动服务器,它可以在一段时间内正常工作,但一段时间后会再次出现错误。
我正在使用该库的最新版本。以下是该错误的完整详细信息
无法获取转换结果标头。数据传输错误。数据传输错误109
错误详细信息
System.Exception
无法获取转换结果标头。数据传输错误。数据传输错误109System.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)
1个ID,布尔值isPrint)
at SchoolMS.Web.Controllers.api.Manage.ApproveSalaryController.Post(List
答案 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 库中的一个软件错误。