我在 onSessionStart 中有一个 INSERT INTO 日志文件,在 onSessionEnd 中有一个 UPDATE。 我已经通过从 Application.cfc 中的其他位置调用 onSessionEnd 来手动测试它,所以我知道它正在工作。
但这是它唯一一次被发射。
我想知道 onSessionEnd 是否永远不会被触发。
最佳答案
我的评论得到了足够多的支持,我想我应该将其作为如何调试 onSessionEnd
方法的答案。
首先,您需要记住,如果直接调用 onSessionEnd,它将在常规请求上下文期间被调用。这意味着它可以访问在常规 session 结束期间调用时通常无法访问的变量。这意味着“通过调用 onSessionEnd 手动测试”不是测试该方法的有效方法。
为此,可靠地调试 onSessionEnd
方法的唯一方法是明智地使用 cflog
标记。当方法运行时,您需要添加 cflog 条目来进行标记,您需要进行错误捕获、记录错误或将 cfcatch 范围转储到文件中以供检查。您还需要确保您在方法中引用的任何内容都是通过 SessionScope 和 ApplicationScope 参数传入的,并且您没有引用除参数
和服务器
。请参阅livedocs供引用。
希望这可以帮助您找到问题的根源。
关于coldfusion - onSessionEnd 显然没有触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5557126/