Coldfusion REST API返回'连接失败。状态代码不可用。'远程调用时

时间:2010-10-10 23:33:35

标签: web-services rest coldfusion coldfusion-9

现在我想要这个前缀,我不确定这应该在这里还是服务器故障所以我会在这里发布它。

我们正在Coldfusion 9中开发一个REST API,它在IIS 7上托管给客户端,在某些调用中,客户端必须调用另一个内部Web服务。当从托管API的服务器进行这些调用时没有错误,但是当我们从远程机器进行调用时,将返回以下消息:

  

'连接失败。状态代码不可用。'

我已经搜索了以下建议作为修复http://www.talkingtree.com/blog/index.cfm/2004/7/28/20040729的问题,但它对我不起作用。以下是我自己测试的注释:

  • 导致问题的电话是get,put,post和delete的混合。
  • 每次通话的唯一常见部分是与同一个网络服务交谈。
  • 我可以直接从我远程调用API的地方调用webservice。
  • 虽然所有的呼叫都会拨打同一个网络服务,但他们并没有对网络服务进行同样的呼叫。

2 个答案:

答案 0 :(得分:2)

想法:

使用解析为内部ColdFusion服务器的URL远程调用Web服务(例如http:// [servername]:8300)。您可能需要进行一些配置才能实现此功能。这样做的原因是确定IIS或ColdFusion是否是根本原因。如果您可以远程访问内部服务器,那么IIS可能就是问题所在。

Web服务是通过SSL调用的吗?如果是这样,远程调用者也是ColdFusion吗?如果您已回答是,请检查远程调用方的JVM是否信任SSL证书。如果没有,您需要将其注册为JVM密钥库的一部分。

您可以从来电者ping主机服务器吗?如果没有,调用者是否需要“主机”条目?

如果在主机上启用,请查看.NET过滤器以及它与HTTP调用的交互方式。我遇到过无法访问名为“/ bin”的文件夹的情况,因为.NET过滤器拦截了请求。

答案 1 :(得分:0)

问题原来是每个调用都需要调用本身正在处理的基本身份验证,但IIS中已启用基本身份验证,导致IIS使用Authorization标头拦截任何请求。

这会导致问题,因为IIS假定如果身份验证被传递,那么它是针对该计算机/域上的用户而拒绝任何其他凭据(对系统有效)。当我们登录到机器时它正在工作,因为它来自本地,它不需要对用户进行身份验证。