subdir中的application.cfc没有从父目录中的application.cfm获取会话变量

时间:2012-11-09 18:12:12

标签: coldfusion application.cfc

我在文件夹/ wwwRoot / beta /中有一个application.cfc。它们在根目录中有一个application.cfm,用于设置一堆会话变量。当我点击beta文件夹中的一个页面以转储所有会话变量时,我看不到application.cfm中定义的那些。

我修改了我的application.cfc以摆脱'onSessionStart'中的所有代码。这没有用。我创建了一个新的application.cfm,其中包含一些我需要的应用程序varibales。这也没有帮助。

有人有什么建议吗?

   <cffunction name="onSessionStart" returnType="void" output="false" hint="Fires ONLY ONCE when session first created and not when session renewed/restarted.">
    <cfscript>
        session.startTime = Now();

    </cfscript>
    <cfreturn>
</cffunction>

我想我需要一些如何复制现有的会话变量。

我在上面的文件夹上创建了一个简单的测试页面。

<cfset session.mynum= 1111>
 <a href="beta/index.cfm">clicky</a>

当我点击链接时,会话转储不包含myNum。 application.cfc中的东西搞砸了。

2 个答案:

答案 0 :(得分:0)

Application.cfc不会受父文件夹中的Application.cfm的影响。您应该将Application.cfm替换为Application.cfc,然后在子文件夹中扩展父Application.cfc。这就是ColdFusion中Application框架的运行方式。

也就是说,如果你不能用Application.cfc替换Application.cfm,那么你可以将会话变量定义分解为一个单独的文件然后将其包含到Application.cfm中并在Application.cfc中重复包含它。在子文件夹中。但是,您的Application.cfm中可能还有其他内容也不会包含在子文件夹的Application.cfc中,因此这不是一个很好的解决方案。最好的解决方案是完全删除Application.cfm,用root中的适当Application.cfc替换它,然后根据需要从任何子文件夹中扩展它。

答案 1 :(得分:0)

发现问题了!在application.cfc中,我在顶部有以下内容:

 <cfscript>
   this.name = "myApp";
 </cfscipt>

应用程序的名称必须与application.cfm中标记中使用的名称相同。一旦名称发生变化,我就可以获得会话变量。

感谢