我正在尝试使用evoPDF dll将URL转换为pdf。这在我在本地计算机上执行时运行正常,但每次在IIS服务器上托管时都会失败。错误如下所示。
加载HTML错误或导航超时。
对于可能导致此失败的可能原因,我们将非常感谢任何建议。
答案 0 :(得分:5)
您应首先检查您转换的HTML页面是否可以在运行转换的服务器上的浏览器中访问。您可以在EVO网站的在线文档中的故障排除页面中找到更多详细信息。以下是相关信息的副本:
转换失败,“导航已中断”,“未找到远程主机名”,“远程服务器拒绝连接”或“未知网络错误”错误消息
当转换器尝试访问HTML页面以在运行转换的服务器上进行转换时,这些错误消息表示存在网络问题。您可以尝试的第一件事是检查您转换的HTML页面是否可以在该服务器上的浏览器中访问。登录该服务器并从那里访问HTML页面非常重要,因为由于各种安全限制,服务器上托管的页面可以从服务器外部访问而不是从服务器本身访问的情况并不少见。如果在服务器上的浏览器中无法访问HTML页面,那么您应该与网络管理员一起使其可访问。
当HTML页面加载时间太长时,也会发生“导航中断”。在这种情况下,您可以简单地增加HtmlToPdfConverter。 NavigationTimeout属性值。
如果可以访问HTML页面但转换器中仍然出现网络错误,那么您应该检查服务器上的浏览器是否使用任何代理设置来访问HTML页面。如果您找到此类代理设置,则应在转换器中设置相同的选项,如代理选项主题中所述。如果HTML页面需要身份验证,那么您应该根据身份验证处理主题中的信息来解决它。
如果问题的原因不是上述任何可能的原因,那么您应该以运行转换器的用户的身份搜索与运行浏览器的用户不同的问题。在服务器上登录时,您在登录用户(通常是管理员)的上下文中运行浏览器。 HTML页面访问中使用的许多网络机制可以基于用户身份和网络凭证。例如,集成Windows身份验证或代理身份验证可以基于运行转换器的用户的凭据。默认情况下,转换器配置为使用运行转换器的用户的凭据,但如果在ASP.NET中运行转换器,则运行转换器的用户是IIS池标识,很可能不是管理员。要在与浏览器相同的上下文中运行转换器,您必须将IIS池标识设置为管理员或在该服务器上的Windows窗体桌面应用程序中运行转换。
在ASP.NET中使用转换器时,问题可能是由您在ASP.NET应用程序中设置的模拟引起的。当您使用模拟时,您可能希望转换器在模拟用户的上下文中运行,但除非您在转换器中设置适当的模拟选项,否则这不是真的。
答案 1 :(得分:1)
使用objectId
非常确定你有防火墙问题:-)我有同样的问题,我的网站引用了谷歌分析,这被我们的fw阻止了。
同样,将导航和渲染超时设置为10秒。默认值太高了。
我使用的是html-to-pdf,但它似乎是一个白标签解决方案,在许多不同的名称下使用。
答案 2 :(得分:1)
另请注意,如果您使用的是ASP.NET MVC并且正在设置HttpCookies,那么托管PdfConverter的Controller必须标记为:
[SessionState(SessionStateBehavior.ReadOnly)]