2

现在我想在这个前缀上加上我不确定这是应该在这里还是服务器故障,所以我先把它贴在这里。

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

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

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

  • 导致问题的调用是 get、put、post 和 delete 的混合。
  • 每个调用的唯一共同部分是与同一个 Web 服务进行通信。
  • 我可以直接从远程调用 API 的地方调用 web 服务。
  • 虽然所有调用都调用同一个 Web 服务,但它们并不都对 Web 服务进行相同的调用。
4

2 回答 2

2

想法:

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

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

你能从调用者ping主机服务器吗?如果没有,调用者是否需要“主机”条目?

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

于 2010-10-10T23:58:50.517 回答
0

问题原来是每个调用都需要调用本身正在处理的基本身份验证,但是在 IIS 中已打开基本身份验证,这导致 IIS 拦截任何带有授权标头的请求。

这会导致一个问题,因为 IIS 假定如果通过了身份验证,那么它适用于该机器/域上的用户,并且会拒绝任何其他凭据(对系统有效)。当我们登录机器时它正在工作,因为它来自本地,不需要对用户进行身份验证。

于 2010-10-13T02:04:15.970 回答