2

我们已经使用 ABCpdf 多年了。事实上,我们仍在使用 6.1 版本。它一直有效。但我们最近升级到了 Windows 2008 x64 / IIS 7.5。

我们将 HTML 页面(发票)转换为 PDF 的代码现在不起作用。基础是有一个基于 QueryString 的 URL 以 HTML 形式呈现发票,这允许我们“预览”它,然后将其发送到我们使用 ASP .NET 执行 ABCpdf 代码的客户端(从服务器到服务器)。这次输出是 PDF,这就是附加到电子邮件并发送给客户的内容。

非常简单直接的东西对吧?

这就是我们注意到 ABCpdf 的原因:

1) PdfObj.AddImageUrl("http://localhost/..."); // Localhost does not work.
2) PdfObj.AddImageUrl("http://127.0.0.1/..."); // Local IP does not work.
3) PdfObj.AddImageUrl("http://41.XX.XX.XX/..."); // Live IP does not work.
Now this:
4) PdfObj.AddImageUrl("http://www.google.com/"); // Works perfectly!

所以我们知道代码和它的一切在技术上可以并且确实有效。

但似乎任何时候 AddImageUrl() 函数调用指向自身的位置时,页面都不会呈现,并且我们会得到“无法呈现 HTML。页面加载超时。无法加载页面。”

我知道这与超时无关,因为如果我使用 Fiddler(在服务器上)执行完全相同的代码,它会完美运行。

我怀疑这与权限有关……什么权限?我读到这个:“ ......这是因为 ABCpdf 使用 Microsoft MSHTML 组件”但是我如何设置这个组件的权限。我已经关闭了“IE ESC”。

我错过了什么?

4

1 回答 1

2

因此,在摆弄了几乎所有设置之后,事实证明 IIS 不允许从 w3wp.exe 到同一 IIS 内的同一“站点”的 URL 调用。

这里有更多内容:http: //support.microsoft.com/kb/316451

这不是“MSXML2.ServerXMLHTTP.3.0”请求,这些似乎有效 - 以及为什么它如此令人困惑。但是在 ABC PDF 中,显然有类似的东西,所以 IIS 阻止了它……事实上,整个“站点”在它失败时被锁定了。

最后,只需要克隆主站点(“site2”),并将解析为 ABC pdf 的 URL 更改为使用克隆站点。

于 2013-07-02T20:08:37.170 回答