微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ColdFusion onSessionEnd问题

如何解决ColdFusion onSessionEnd问题

| 我已经阅读了许多对onSessionEnd有问题的人的帖子。这是我第一次将application.cfm转换为application.cfc,并且onSessionEnd无法与我要调用的CFFunction一起使用。 我猜想这是如何从驻留的/ lib / components /文件夹中正确调用该组件的。 当用户登录时,我正在创建一个会话数组,以跟踪该作业的jobNumber和last_completed_step。用户会话中有多个作业。在会话结束时,我想将更新后的数组数据写回到DB。 我应该明确指出,目前我查看了我的日志文件,并看到会话已开始-如下面的onSessionStart中所示。此外,当我取出组件的调用时,onSessionEnd也将写入日志文件。换句话说,如果我只是告诉它将“会话结束”写入日志文件,我会在日志文件中看到它。我已在CF Administrator和我的app.cfc中将当前会话超时设置为3分钟以进行测试。 如果我从单独的文件(也在根级别)中在jobState.cfc中调用\“ giveMeAnswer \”方法,则GiveMeAnswer方法将正常工作并返回值“我是CFC”。 如果我将jobState.cfc移到根目录,并将组件属性设置为\“ jobState \”,那么我也将从组件中得到回报。
<!--- Runs when your session starts --->
<cffunction name=\"onSessionStart\" returnType=\"void\" output=\"false\">

<!--- :: invoke all session variables | moved out of on session start  :: --->
<cfinvoke component=\"#application.virtualPaths.cfcPath#system/sessionVars\" method=\"init\" />

<cflog file=\"#This.Name#\" type=\"information\" text=\"Session started.\">

</cffunction>

<!--- Runs when session times out --->

<cffunction name=\"onSessionEnd\" returntype=\"void\">
<cfargument name=\"SessionScope\" type=\"struct\" required=\"true\" />
<cfargument name=\"ApplicationScope\" type=\"struct\" required=\"true\" />

<cfinvoke component=\"/lib/components/jobState\" method=\"giveMeAnswer\" returnvariable=\"returnFromCfc\">
</cfinvoke>

<cflog file=\"#This.Name#\" type=\"information\" text=\"Session ended.  #returnFromCfc#\">

<cfreturn />
</cffunction>
因此,是否只是找不到组件?还有其他想法吗? 非常感谢,杰里     

解决方法

        我知道我以前见过人们在组件调用中使用/,但是我不认为它得到了官方支持。您想改用点符号路径ala component = \“ lib.components.jobstate \” 并确保lib是指向lib文件夹的子目录或已知的CF映射。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。