Dan*_*ane 1 coldfusion application.cfc
我有一个CF9项目设置了多层目录结构.在根级别,我有一个带有Application.cfc的实时生产站点.它包含许多绑定到'debugMode'标志的变量 - 因此在生产站点的情况下,此标志设置为false.
在生产站点的子目录中,我有一个包含站点测试版本的文件夹.它有自己的Application.cfc,debugMode设置为true.除了这个标志和我们正在测试的更改之外,它与生产Application.cfc相同.
这个UNTIL没有任何问题我们添加了重置Application.cfc的逻辑,以便在不等待超时(我们设置为30分钟)的情况下查看我们的更改.
为此,我们将此块添加到Application.cfc中的"OnRequestStart"函数中(它出现在生产版和测试版上):
<cfif StructKeyExists( URL, "reset" )>
<!--- Reset application and session. --->
<cfset THIS.OnApplicationStart() />
<cfset THIS.OnSessionStart() />
</cfif>
Run Code Online (Sandbox Code Playgroud)
这最初似乎工作正常.如果我们在测试版本的任何页面的url中添加'?reset',立即反映Application.cfc所做的更改,但我们很快发现了一个令人讨厌的副作用:在测试版本上调用reset也改变了我们的生产站点以使用测试Application.cfc的版本,从而大大地满足一切.
在生产站点上运行'?reset'逻辑修复了此问题,但随后导致所有测试页使用生产Application.cfc而不是测试版.等待Application.cfcs超时并自动刷新没有任何区别,所以现在我们的测试环境搞砸了.
任何有关正在发生的事情或做什么的见解将会非常感激,因为我们相当难倒.这只是一个糟糕的建筑吗?我们继承了它,现在已经习惯了这种结构,所以快速修复是首选,但我愿意接受建议.
谢谢.
问题很可能是两个application.cfc文件指定了相同的应用程序名称.
因此,它们本质上是相同的应用程序.
因此,无论是从"测试"站点还是"实时"站点触发刷新,它都会重置相同的应用程序,然后从您发出重置的任何版本重新实例化变量.
您需要将"Test"应用程序的应用程序名称设置为与实时应用程序不同的名称.
对于测试:
<!--- For the "Test" Application --->
<cfset this.name = "TESTApplication">
Run Code Online (Sandbox Code Playgroud)
为了生活:
<!--- For the "Live" Application --->
<cfset this.name = "Application">
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
186 次 |
| 最近记录: |