无法使映射工作

时间:2013-01-22 16:42:24

标签: coldfusion mapping coldfusion-10

我有以下目录结构:

| SITES_FOLDER

    |___ WEBSITE1

        |___ WEBSITE_CFC

    |___ CFC_DIR

WEBSITE1包含Application.cfc和一些页面。然后我在WEBSITE_CFC目录中有一个组件ShoppingCart.cfc,它使用以下代码在会话开始时实例化:

createObject("component","WEBSITE_CFC.ShoppingCart").Init() />      

这很有效。

现在我将ShoppingCart.cfc移动到CFC_DIR目录并将我的实例化代码更改为:

createObject("component","CFC_DIR.ShoppingCart").Init() />      

显然这不起作用,因为ColdFusion在根目录“WEBSITE1”下搜索“CFC_DIR”目录但找不到它。

我认为这个问题可以通过映射来解决,所以我去了CFIDE管理员。服务器设置>映射。

Logical path: "CFC_DIR"

Directory path: "C:\some\folders\SITES_FOLDER\CFC_DIR"

没有运气。那么我在Application.cfc中尝试了:

<cfset THIS.mappings["/CFC_DIR"] = "C:\some\folders\SITES_FOLDER\CFC_DIR" />

这也不起作用!

修改

也许我理解:如果我尝试从cfm模板创建CFC,它就可以工作。

当我尝试在 OnSessionStart Application.cfc的方法中创建它时出现错误:

  

确保名称正确以及组件或接口   存在。消息无法找到ColdFusion组件或接口   C:\一些\文件夹\ SITES_FOLDER \ WEBSITE1 | WEBSITE_CFC \ ShoppingCart.cfc

换句话说,它一直在错误的目录中寻找它。

为什么?

1 个答案:

答案 0 :(得分:1)

如果您要将文件更改为/ CFC_DIR但它仍在使用/ WEBSITE_CFC,则听起来需要清除缓存。

清除CF Admin中的缓存

清除缓存可以在ColdFusion Administrator中手动完成。登录后,“服务器设置”中的第三项是“缓存”。滚动到页面底部,按钮可清除缓存。

出于开发目的,您可能需要考虑完全禁用此页面上的各种缓存选项 - 它们对于实时服务器的性能改进很有用,但通常是开发计算机上不必要的障碍。

以编程方式清除缓存

如果您有自动部署,则不必在远程服务器上登录CF Admin并按下按钮。幸运的是,您还可以clear the cache programmatically

<cfscript>
    createObject("Component", "cfide.adminapi.administrator")
        .login("**replace with admin password**");

    RuntimeService = createObject("component", "cfide.adminapi.runtime");

    // Clear whole cache:
    RuntimeService.clearTrustedCache();

    // Clear cache for individual files:
    RuntimeService.clearTrustedCache("/path/to/file1.cfm,/path/to/file2.cfm");

    // Clear component cache:
    RuntimeService.clearComponentCache();
</cfscript>

(代码改编自Charlie's blog entry。)

可以在http://www.cfexecute.com/admin-api-documentation/runtime-cfc/

找到Admin Runtime组件的API