我刚刚在我的计算机上安装了ColdFusion 11 Developer Edition,以使我的LocalHost环境与我们最近升级的开发和生产环境相匹配。
但是现在,在其他地方工作的相同代码在新安装上失败了 - 具体来说:
当我们的服务器管理员在12月份从ColdFusion 9升级到11时,也会发生此错误,所以我联系他以了解他是如何解决的。但是,一个重要的区别是他使用Apache Web服务器安装在Linux机器上,而我使用ColdFusion 11 Developer Edition的内置Web服务器在Windows 7计算机上进行安装。
无论如何,他告诉我他已经做了两处修改来解决他的系统上的错误:
global.conf
文件中,添加以下行:RewriteEngine on
RewriteRule .* - [E=REMOTE_USER:%{REMOTE_USER}]
RewriteRule .* - [E=SCRIPT_NAME:%{REQUEST_URI}]
RewriteRule .* - [E=AUTHENTICATE_CN:%{ENV:AUTHENTICATE_CN}]
RewriteRule .* - [E=AUTHENTICATE_DEPARTMENTNUMBER:%{ENV:AUTHENTICATE_DEPARTMENTNUMBER}]
RewriteRule .* - [E=AUTHENTICATE_GIVENNAME:%{ENV:AUTHENTICATE_GIVENNAME}]
RewriteRule .* - [E=AUTHENTICATE_MAILALTERNATEADDRESS:%{ENV:AUTHENTICATE_MAILALTERNATEADDRESS}]
RewriteRule .* - [E=AUTHENTICATE_MAIL:%{ENV:AUTHENTICATE_MAIL}]
RewriteRule .* - [E=AUTHENTICATE_ORGANIZATIONALSTATUS:%{ENV:AUTHENTICATE_ORGANIZATIONALSTATUS}]
RewriteRule .* - [E=AUTHENTICATE_SERIALNUMBER:%{ENV:AUTHENTICATE_SERIALNUMBER}]
RewriteRule .* - [E=AUTHENTICATE_SN:%{ENV:AUTHENTICATE_SN}]
RewriteRule .* - [E=AUTHENTICATE_TELEPHONENUMBER:%{ENV:AUTHENTICATE_TELEPHONENUMBER}]
RewriteRule .* - [E=AUTHENTICATE_UID:%{ENV:AUTHENTICATE_UID}]
global.conf
文件。 Application.cfc
网络搜索效率不高,但确实引导我进入very old instruction for ColdFusion 8。根据该文章,我尝试将以下行添加到我的Application.cfc
文件中 - 但这并未解决错误:
<cfset this.sessionManagement = "Yes" >
<cfset this.name = "ApplicationName" >
我在Stack Overflow上搜索了类似的问题,但没有找到任何有希望的线索。我found one similar question here,但是这个人似乎遇到了与我遇到的问题不同的问题:在他的情况下,SESSION
变量存在(因为他可以用<cfdump>
演示,但是被忽略了稍后在代码中。但就我而言,SESSION
变量似乎并未首先创建。
我 尝试了其中一条建议,但是:将以下内容添加到onSessionStart()
:
SESSION.User = CreateObject("component", "cfc.User");
不幸的是,这并没有解决问题。
我怀疑问题的症结在于我使用了内置服务器,并且我必须在某个配置文件中添加行,就像我们的服务器管理员使用Apache global.conf
文件一样。
我需要做些什么来让我的代码在本地ColdFusion 11安装上运行?
最终,问题的原因是配置问题(由于程序设计有缺陷而加剧):
在OnApplicationStart()
函数中,有一个对数据库的调用,该调用失败,因为我忽略了在这个新安装上安装相应的JAR
文件。这将程序执行发送到OnError()
函数。在我们的例子中,OnError()
函数包含其报告中SESSION
变量的一些信息 - 但由于程序执行从未完成OnApplicationStart()
函数,因此它从未进入OnSessionStart()
函数创建SESSION
变量的位置。这导致“变量SESSION未定义”错误。
我赞成Kris的回答并将其标记为正确。 (为新用户做得很好,Kris!)
答案 0 :(得分:6)
通过确定安装与代码是否存在问题,继续进行问题排查。我会尝试使用CF服务器配置工具在Apache中创建一个新站点,然后在CFB中创建一个新项目。创建Application.cfc文件和index.cfm。在Application.cfc中,请确保您拥有this.sessionManagement = true
和this.clientManagement = true
。在index.cfm中只有cfdump
会话。如果此操作成功,您可以进一步查看现有代码。如果失败,您可能想尝试重新安装CF.
答案 1 :(得分:0)
如果您不小心将CFAdmin中的会话变量的超时参数设置为0,也会发生这种情况。它不是无限的,它将使会话范围消失。