ColdFusion onSessionEnd问题

时间:2011-06-15 15:28:11

标签: coldfusion application.cfc

我已阅读过onSessionEnd问题的人发来的很多帖子。这是我第一次将application.cfm转换为application.cfc,并且onSessionEnd不能使用我试图调用的CFFunction。

我想这样做是为了如何从它所在的/ lib / components /文件夹中正确调用该组件。

当用户登录时,我正在创建一个会话数组,用于跟踪该作业中的jobNumber和last_completed_step。用户会话中有多个作业。在会话结束时,我想将更新的数组数据写回数据库。

我应该说清楚,目前我查看我的日志文件并看到会话已启动 - 如下面所示的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>

那么,是不是找不到组件?还有其他想法吗?

非常感谢,Jerry

1 个答案:

答案 0 :(得分:3)

我知道我以前见过人们在组件调用中使用/,但我不认为它是官方支持的。您想使用点符号路径,而不是ala

成分= “lib.components.jobstate”

并确保lib是子目录或指向lib文件夹的已知CF映射。

相关问题