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

Coldfusion subdir中的application.cfc未从父目录中的application.cfm获取会话变量,coldfusion,application.cfc,Coldfusion,Application.cfc,我在/wwwRoot/beta/文件夹中有一个application.cfc。它们在根目录中有一个application.cfm,用于设置一组会话变量。当我点击beta文件夹中的一个页面转储所有会话变量时,我没有看到application.cfm中定义的会话变量 我修改了application.cfc以删除“onSessionStart”中的所有代码。那没用。我用我需要的几个应用程序变量创建了一个新的application.cfm。那也没用 有人有什么建议吗 <cffunction

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

我修改了application.cfc以删除“onSessionStart”中的所有代码。那没用。我用我需要的几个应用程序变量创建了一个新的application.cfm。那也没用

有人有什么建议吗

   <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>

session.startTime=Now();
我想我需要了解如何复制现有的会话变量

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

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


单击链接时,会话转储不包括myNum。应用程序中的某些东西。cfc在胡闹

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


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

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

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

this.name=“myApp”;
应用程序的名称必须与application.cfm中标记中使用的名称相同。一旦更改了名称,我就能够获得会话变量


谢谢

除非将源代码发布到/wwwRoot/beta/文件夹中的Application.cfc以及/wwwRoot/parent中的Application.cfm,否则无法回答此问题。它可能有很多东西,如果不看代码,我们就无法进一步给出答案。另一方面,如果我删除application.cfc,我可以看到所有会话变量。将application.cfm转换为application.cfc不是一个选项。好吧,我给了你另一个选项,尽管它不是一个好选项。您正在尝试将两个解决方案组合在一起,而这两个解决方案不是以这种方式设计或打算协同工作的。您还可以将Application.cfc替换为另一个Application.cfm和cfm,包括父应用程序.cfm,这不是解决方案。如果您首先点击子文件夹中的页面,会话变量将不存在,并且您将得到一个错误,除非您有错误处理程序或者您首先检查变量的存在。