【问题标题】:application.cfc in subdir not getting session variables from application.cfm in the parent directory子目录中的 application.cfc 未从父目录中的 application.cfm 获取会话变量
【发布时间】:2012-11-09 18:12:12
【问题描述】:

我在文件夹 /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>

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

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

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

当我单击链接时,会话转储不包括 myNum。 application.cfc 中的某些东西正在搞砸事情。

【问题讨论】:

  • 除非您将源发布到 /wwwRoot/beta/ 文件夹中的 Application.cfc 以及 /wwwRoot/ 父级中的 Application.cfm,否则无法回答此问题。它可能有很多东西,如果没有看到代码,我们就无法进一步找到答案。
  • 附带说明,如果我删除 application.cfc,我可以看到所有会话变量。

标签: coldfusion application.cfc


【解决方案1】:

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

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

【讨论】:

  • 不能将 application.cfm 转换为 application.cfc。
  • 好的,我给了你另一个选择,虽然它不是一个很好的选择。您正在尝试将两个并非设计或旨在以这种方式协同工作的解决方案结合在一起。您还可以将 Application.cfc 替换为另一个 Application.cfm 并 cfinclude 父 Application.cfm
【解决方案2】:

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

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

应用程序的名称必须与 application.cfm 中标签中使用的名称相同。更改名称后,我就可以获取会话变量。

谢谢

【讨论】:

  • 这不是解决方案。如果您首先点击子文件夹中的页面,则会话变量将不存在,并且您将收到错误消息,除非您有错误处理程序或您首先检查变量是否存在。
猜你喜欢
  • 2013-12-09
  • 2018-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-29
  • 2019-08-14
相关资源
最近更新 更多