错误:无法使用 PayFlow Pro 和 ASP.NET 1.1 连接到主机 URI



我们有一个支持网站,用于为客户创建自定义订单。本网站运行 ASP.NET 1.1 并使用 PayFlow Pro API 连接到PayPal。

我们还有一个面向客户的网站,运行 ASP.NET 4.0,并使用PayFlow Pro连接到PayPal。

面向客户的网站与PayPal通信正常,但我们从支持站点收到"无法连接到主机 Uri"错误。

此外,我们设置了一个测试服务器来运行支持站点,它与PayPal通信没有问题。我可以分辨出测试站点和生产支持站点之间的唯一区别是测试运行的是 IIS 7.0,而生产运行 IIS 7.5。所有 DLL 和配置文件似乎都是相同的。

所有这些都在大约一周前开始发生,就在PayPal停止使用SSL之后。我认为这与SSL切换有关,但是我们已经在IIS中禁用了SSL,所以我不确定还能在哪里查找。为什么面向客户的站点会继续工作,而支持站点无法连接?它们使用相同的基础结构。

这不是您要找的答案,但自 1 月 12 日以来,我们一直面临同样的问题。 我们采取了与您相同的步骤,并看到了相同的结果。 有趣的是,如果我们进行IIS重置,它将再次开始工作,至少在一段时间内。

我们在上次出现问题时进行了Wireshark跟踪,我们真正发现的是连接正在PayPal端重置。 我们怀疑问题出在PayPal网络内,可能是由于它们最近的SSL更改。 我建议您在看到错误时进行Wireshark跟踪并将其提交给PayPal。 这基本上就是我们正在尝试解决这个问题的方法。

更新:经过一些测试,这似乎是最近的SSL更改的问题。 我们最终能够重现此问题。 我们相信我们已经发现,如果你的.Net应用程序调用任何其他仍然允许SSL 3的Web服务(如Youtube的API),那么IIS将始终尝试使用SSL3,至少在你执行IIS重置之前。 由于PayPal不再允许 SSL3,因此与PayPal的连接将失败。 如果执行 IIS 重置,请尝试PayPal它是否正常工作,除非你的应用命中另一个 SSL3 终结点,此时PayPal将再次开始失败。

像您一样,我们有一个管理员应用程序,它根本不存在于外部。 也像您一样,我们的电子商务网站仍然运行良好。 我们认为这是因为我们的电子商务不会对任何服务进行任何SSL3调用,因此我们的电子商务所在的服务器永远不会"卡住"在SSL3上。 但是,我们的内部应用程序确实与YouTube API进行了交互。 如果我们点击允许SSL3的YouTube API,那么我们的PayFlow交易就会开始出错。 如果我们进行IIS重置,PayFlow将起作用,直到我们点击YouTube API,然后PayFlow再次中断。

我知道这有点偶然,但它可能会给你一些事情要继续。

祝你好运!

顺便说一句,我们还在IIS中"禁用"了SSL,但这似乎并不能解决问题。

这也不是您一直在寻找的答案,但我们也遇到了同样的问题,尽管我们花了几天时间工作并与PayPal进行了多次沟通,但我们无法解决它。

这是我们能够找到的唯一符合我们问题的帖子,所以我将PayPal指出它,也许如果其他人提出了PayPal票,他们可以发布他们的票号,这样我们就可以向他们证明存在比他们承认的更广泛的问题。我们的电话是150113-000138。

我们目前无法重置IIS,但我们将在一夜之间这样做,看看它是否允许成功付款。我稍后会发布更新。

更新:

经过大量的研究,试验和错误,我们得出的结论是,这确实是一个Microsoft问题,并且IIS重置确实可以解决问题,直到从服务器建立另一个连接,将连接敲回SSL。

我们的方法是将 1.1 站点移动到 .Net 4.0 CLR 中。这不是一帆风顺的,因为有几个连锁问题,但通过耐心和仔细的调试,我们解决了这些问题,现在有一个工作网站。

我在框架 4.6.1 下遇到了同样的问题,我的问题是由 web.config 设置<httpRuntime targetFramework="4.5" />引起的。当我将目标框架更改为 4.6 时,它为我修复了错误。希望这对任何有相同问题的人有所帮助。