Coldfusion:元素ROOT.DSN在APPLICATION中未定义



我支持传统的Cold Fusion系统,我不明白为什么我会时不时地出现以下错误:

元素ROOT.DSN在APPLICATION中未定义。

错误似乎出现在随机的地方,对我来说没有意义。如果我了解冷融合的工作原理-每个请求都首先处理Application.cfm,对吧?

我们有:

if (not isDefined('Application.Root')) 
include '/lib/config/CreateRoot.cfm';

CreateRoot进行一些初始化,设置ROOT.DSN就是其中之一。

这对我来说没有任何意义,因为通常调用者也会从数据库中加载一些东西,所以为什么一个函数可以";参见";当我们进入另一个时,这个就不见了?它不是ROOT.DSN,但有时其他设置,我们以相同的方式初始化。

重试通常是成功的,所以我能得到的唯一解释是,当这种情况发生时,服务器正在运行一些垃圾收集器并清理一些内存。

我的问题是:

  1. 为什么会发生这种情况,为什么/何时会丢失应用程序变量
  2. 如何预防

使用正确的作用域是防止这些问题的重要因素。请使用";application.root.ds";以确保您确实调用了正确的作用域。只有在执行以下操作时,应用程序变量才会重置:

  1. 重新启动应用程序
  2. 重命名应用程序
  3. 重新启动机器,这本身也会重新启动服务器上的应用程序
  4. 手动重置应用程序范围

除此之外,一旦应用程序第一次运行,您应该始终能够访问它,并且它不应该重新启动。

相关内容

最新更新