无法从cfinvoke语句中找到组件

时间:2019-06-24 19:02:54

标签: coldfusion cfml cfinvoke

由于有人离开了我要维护的公司,因此我收到了一些ColdFusion代码。问题是我上一次查看ColdFusion代码大约是10年前了,所以我完全迷路了,我从头开始。

我的问题是我试图找到组件或代码以及下面显示的代码中正在调用的内容。

<cfinvoke component="_admin_tools_kms" method="listKMSUsers" returnVariable="getKMSUsers">
    <cfinvokeargument name="argFullAccount" value="1" />
</cfinvoke>

我知道这将返回该系统的用户列表,但是我无法找到进行该调用的确切代码。该组件名称“ _admin_tools_kms”应该是某个位置的 cfm 文件的名称,还是仅仅是以某种方式创建的引用名称?

1 个答案:

答案 0 :(得分:3)

让我们分解一下:

<cfinvoke 
    component="someComponent" 
    method="someFunction" 
    returnVariable="someVariable">
    <cfinvokeargument name="someArgument" value="foo" />
</cfinvoke>

属性component是扩展名为.cfc的文件的名称,或者是包含该组件实例的变量。如果它是一个变量,则将其称为#someComponent#

如果其中只有一个简单值,则可能是同一文件夹中有一个名为someComponent.cfc的文件。

如果其中有一个点分隔的值,例如cfc.services.someComponent

  • 在名为/cfc/的Web根目录下查找一个文件夹,其中包含另一个文件夹/services/,您将在其中找到文件someComponent.cfc
  • 如果没有看到该文件夹​​,请在根Application.cfc文件中查找一个ColdFusion映射,该映射创建别名cfc并将其映射到所需的文件夹。
  • 如果没有,请检查您的Web服务器上的文件夹别名或映射,以了解某些心理变态者隐藏了该代码所在的位置的原因。

但是,我更喜欢对引用的方法而不是组件进行简单的文本搜索。该功能可能存在于引用的组件或文件之外的其他组件或文件中。

由于CFC可以扩展另一个CFC,因此可能存在parentComponent.cfc扩展的someComponent,其中实际上包含有问题的方法。更糟糕的是,文件someComponent.cfc可能包含其他文件,其中一个包含该方法。唯一的缺点是该函数的名称是否很常见,例如create