SOAP/HTTP 在 ColdFusion 中使用不同的文件夹映射

SOAP/HTTP using different folder mappings in ColdFusion

我在使用 ColdFusion 11 服务器时遇到了一些奇怪的行为,该服务器(除其他外)发布了一些通过 SOAP 和 HTTP 访问的 Web 服务。服务器本身是 Windows 2012,运行 IIS。实际文件夹配置如下:

IIS 配置了两个网站,'BOB' 和 'BOB_Services'。两者都已使用 CF Server Config 工具进行配置,以便 CF 处理 .cfc、.cfm 文件。他们共享一个通用的 CFIDE 配置。

在 CF Admin 中配置了从“/”到 'I:/inetpub/BOB' 的文件夹映射。不要问我为什么,好像没人知道。

通常 BOB_Services 只有 中有一个 services.cfc 文件。昨天我们不小心将同一个文件复制到 BOB 根文件夹中,我们所有使用 BOB_Services\services.cfc 的 SOAP 服务都开始抛出错误。然而,我可以通过 HTTP 查询相同的网络服务(例如,使用 http://bob/services.cfc?method=function1&param1=0 ....等)并获得有效结果。

这是一个参考答案,以防其他人遇到这种奇怪的行为。

似乎在使用 HTTP GET 调用 BOB_Services/services.cfc 时,文件夹映射

'/' -> 'I:/inetpub/BOB'

被忽略,用于处理请求的实际文件是 I:/inetpub/BOB_Services/services.cfc.

当使用 SOAP 客户端调用 BOB_Services/services.cfc 中的函数时,将调用文件夹映射并且用于处理请求的文件是 I:/inetpub/BOB/services.cfcIF IT EXISTS。如果不存在,则按预期使用文件 I:/inetpub/BOB_Services/services.cfc

此行为似乎是完全可重复的 - 我可以发出一个 SOAP 请求,得到一个结果,更改映射,发出另一个请求并得到另一个结果。