我们已经使用 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”。
我错过了什么?
最佳答案
因此,在摆弄了几乎所有设置后,结果表明 IIS 不允许从 w3wp.exe 到同一 IIS 中的同一“站点”进行 URL 调用。
这里有更多内容:http://support.microsoft.com/kb/316451
这不是“MSXML2.ServerXMLHTTP.3.0”请求,这些请求似乎有效 - 以及为什么它如此令人困惑。但在 ABC PDF 中,显然有类似的东西,因此 IIS 阻止了它......事实上,整个“站点”在失败时被锁定。
最后所需要做的就是克隆主站点(“site2”),并将解析为 ABC pdf 的 URL 更改为使用克隆站点。
关于iis - ABCpdf (AddImageUrl) 在本地主机的 IIS 7.5 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17422994/