首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ColdFusion 11:“变量会话未定义”错误

ColdFusion 11:“变量会话未定义”错误
EN

Stack Overflow用户
提问于 2015-04-02 16:38:09
回答 2查看 2.4K关注 0票数 4

问题

我刚刚在我的电脑上安装了ColdFusion 11开发者版,使我的LocalHost环境与我们最近升级的开发和生产环境相匹配。

但是现在,在新安装中同样的代码正在失败--特别是:

  • 以前的ColdFusion 9 LocalHost (我试图用新的安装替换它):代码工作。
  • ColdFusion 11开发和生产环境:代码工作。
  • New ColdFusion 11 LocalHost:代码失败,出现“变量会话未定义”错误。

不起作用的尝试解决方案

尝试在我们的开发和生产服务器中所做的工作

当我们的服务器管理员在12月执行从ColdFusion 9到11的升级时,也发生了这个错误,所以我联系他,了解他是如何解决这个问题的。但是,一个显著的区别是,他使用Apache服务器在Linux上安装,而我则使用ColdFusion 11 Developer Edition的内置web服务器在Windows7计算机上安装。

无论如何,他告诉我,为了解决系统上的错误,他做了两次更改:

  1. 在ColdFusion管理员中,确保启用了所有内存变量。 **我这样做了,检查了以下内容,然后单击Submit更改:
    • 使用J2EE会话变量
    • 启用应用程序变量(已选中)
    • 启用会话变量(已选中)**

  1. 在Apache 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}] 不过,我认为这与我无关,因为我正在使用内置的web服务器进行此开发安装,并且在我的安装中任何地方都看不到一个global.conf 文件。

网络搜索:在Application.cfc中添加设置

网络搜索并不是很有效率,但确实让我找到了一个非常古老的ColdFusion 8指令。基于那篇文章,我尝试将以下行添加到我的Application.cfc文件中--但这并没有解决错误:

代码语言:javascript
复制
<cfset this.sessionManagement = "Yes" >
<cfset this.name = "ApplicationName" >

关于堆栈溢出的类似答案

我在Stack Overflow上搜索了类似的问题,但是没有找到任何有希望的线索。我在这里发现了一个类似的问题,但那个人似乎有一个不同于我正在经历的问题:在他的例子中,SESSION变量存在(正如他可以用<cfdump>演示的那样,但在代码中稍后会被忽略)。但在我的例子中,SESSION变量似乎一开始就没有创建。

不过,我确实尝试了其中一个建议:将以下内容添加到onSessionStart()SESSION.User = CreateObject("component", "cfc.User");

不幸的是,这并没有解决问题。

猜疑

我怀疑问题的症结在于我对内置服务器的使用,并且我必须在配置文件中添加行,就像服务器管理员对Apache global.conf文件所做的那样。

有什么想法吗?我需要做些什么来让我的代码在这个本地ColdFusion 11安装上工作?

更新:决议

最终,造成问题的原因是配置问题(由于有缺陷的程序设计而更加复杂):

OnApplicationStart()函数中,有一个对数据库的调用,它失败了,因为我忽略了在这个新安装上安装适当的JAR文件。这将程序执行发送到OnError()函数。在我们的示例中,OnError()函数在其报告中包含了来自SESSION变量的一些信息--但是由于程序执行从未完成OnApplicationStart()函数,因此它从未进入创建SESSION变量的OnSessionStart()函数。这导致了“变量会话是未定义的”错误。

我对克里斯的回答投了反对票,并将其标记为正确。(为新用户Kris做得很好!)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-02 17:33:51

通过确定安装与代码之间是否有问题,继续进行故障排除。我将尝试在Apache中创建一个新站点,使用CF服务器配置工具,然后在CFB中创建一个新项目。创建一个Application.cfc文件和index.cfm。在Application.cfc中,确保有this.sessionManagement = truethis.clientManagement = true。在index.cfm中,只是cfdump会话。如果这导致成功,您可以进一步查看您现有的代码。如果失败,您可能想尝试重新安装CF。

票数 6
EN

Stack Overflow用户

发布于 2019-05-16 12:34:03

如果意外地将CFAdmin中的会话vars的超时参数设置为0,也会发生这种情况。它不会是无限的,它将使会话范围消失。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29418042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档