5

我正在尝试使用 evoPDF dll 将 URL 转换为 pdf。当我在本地机器上执行它时运行良好,但每次托管在 IIS 服务器上时都会失败。错误如下。

加载 HTML 错误或导航超时。

任何关于此失败可能原因的建议都将受到高度赞赏。

4

3 回答 3

6

您应该首先检查您转换的 HTML 页面是否可以在您运行转换的服务器上的浏览器中访问。您可以在 EVO 网站的在线文档中的故障排除页面中找到更多详细信息。以下是相关信息的副本:

转换失败,出现“导航中断”、“找不到远程主机名”、“远程服务器拒绝连接”或“未知网络错误”错误消息

当转换器尝试在运行转换的服务器上访问要转换的 HTML 页面时,这些错误消息表明存在网络问题。您可以尝试的第一件事是检查您转换的 HTML 页面是否可以在该服务器上的浏览器中访问。登录该服务器并从那里访问 HTML 页面很重要,因为由于各种安全限制,服务器上托管的页面可以从服务器外部访问但不能从服务器本身访问的情况并不少见。如果在服务器上的浏览器中无法访问 HTML 页面,那么您应该与网络管理员合作以使其可访问。

当 HTML 页面加载时间过长时,也会发生“导航中断”。在这种情况下,您可以简单地增加 HtmlToPdfConverter。NavigationTimeout 属性值。

如果 HTML 页面可以访问,但您仍然在转换器中遇到网络错误,那么您应该检查服务器上的浏览器是否使用任何代理设置来访问 HTML 页面。如果您发现这样的代理设置,那么您应该在转换器中设置与代理选项主题中解释的相同的选项。如果 HTML 页面需要身份验证,那么您应该根据身份验证处理主题中的信息来解决它。

如果问题的原因不是上述任何可能的原因,那么您应该在运行转换器的用户与运行浏览器的用户不同的身份中搜索问题。当您登录服务器时,您在登录用户的上下文中运行浏览器,该用户通常是管理员。HTML 页面访问中使用的许多网络机制可以基于用户身份和网络凭据。例如,集成 Windows 身份验证或代理身份验证可以基于运行转换器的用户的凭据。转换器默认配置为使用运行转换器的用户的凭据,但如果您在 ASP.NET 中运行转换器,则运行转换器的用户是 IIS 池标识,很可能不是管理员。

当您在 ASP.NET 中使用转换器时,问题可能是由您在 ASP.NET 应用程序中设置的模拟引起的。当您使用模拟时,您希望转换器在模拟用户的上下文中运行,但除非您在转换器中设置适当的模拟选项,否则这不是真的。

于 2015-07-11T13:59:02.780 回答
3

利用netstat -a -n | find "SYN"

很确定你有防火墙问题:-) 我有同样的问题,我的网站引用了谷歌分析,它被我们的 fw 阻止了。

同样,将导航和渲染超时设置为 10 秒。默认值太高了。

我使用 html-to-pdf,但它似乎是一个以许多不同名称使用的白标解决方案。

于 2015-10-13T14:58:39.733 回答
1

另请注意,如果您使用 ASP.NET MVC 并设置 HttpCookies,则托管 PdfConverter 的控制器必须标记为:

  [SessionState(SessionStateBehavior.ReadOnly)]
于 2017-01-30T19:00:12.230 回答