我在onSessionStart中有一个INSERT INTO日志文件,在onSessionEnd中有一个UPDATE。 我通过从Application.cfc中的其他地方调用onSessionEnd手动测试它,所以我知道它正在工作。
但这是它唯一被解雇的时间。
我想知道onSessionEnd是否永远不会被解雇。
答案 0 :(得分:3)
我对我的评论得到了足够的赞成,我想我已经把它作为如何调试onSessionEnd
方法的答案。
首先,您需要记住,如果直接调用onSessionEnd,则会在常规请求上下文中调用它。这意味着它可以访问在常规会话结束时调用它通常无法访问的变量。这意味着“通过调用onSessionEnd手动”测试不是测试方法的有效方法。
为此,可靠地调试onSessionEnd
方法的唯一方法是明智地使用cflog
标记。您需要在方法运行时添加cflog条目以标记,您需要捕获错误,记录错误或将cfcatch
范围转储到文件以供审阅。您还需要确保通过SessionScope
和ApplicationScope
参数传递方法中引用的任何内容,并且您没有引用Arguments
以外的任何范围和Server
。请参阅livedocs以供参考。
希望这可以帮助您找到问题的根源。
答案 1 :(得分:1)
我补充说你甚至无法从onSessionEnd方法中调用其他Application.cfc函数。