我有一個INSERT INTO日誌文件在onSessionStart和一個UPDATE在onSessionEnd。 我通過從Application.cfc中的其他地方調用onSessionEnd手動測試它,所以我知道它工作。onSessionEnd顯然不發射
但這是唯一一次被解僱。
我不知道onSessionEnd是否永遠不會被解僱。
我有一個INSERT INTO日誌文件在onSessionStart和一個UPDATE在onSessionEnd。 我通過從Application.cfc中的其他地方調用onSessionEnd手動測試它,所以我知道它工作。onSessionEnd顯然不發射
但這是唯一一次被解僱。
我不知道onSessionEnd是否永遠不會被解僱。
我在我的評論中得到了足夠的upvotes,我想我會讓它成爲如何調試onSessionEnd
方法的答案。
首先,您需要記住,如果直接調用onSessionEnd,則會在常規請求上下文中調用它。這意味着它可以訪問在常規會話結束時被調用的變量,這些變量通常無法訪問。這意味着「通過調用onSessionEnd手動測試」不是測試方法的有效方法。
爲此,可靠地調試onSessionEnd
方法的唯一方法是明智地使用cflog
標籤。您需要添加cflog條目以在方法運行時標記,您需要捕獲錯誤,記錄錯誤或將cfcatch
範圍轉儲到文件以供審閱。您還需要確保在方法中引用的任何內容都通過參數SessionScope
和ApplicationScope
傳入,並且您沒有引用除Arguments
和Server
以外的任何範圍。請參閱livedocs以供參考。
希望能幫助您找到問題的根源。
哦!感謝丹(和所有)的評論!我正在使用會話變量並需要使用SessionScope變量。再次感謝! – 2011-04-06 18:52:03
我想補充一點,你甚至不能在onSessionEnd方法中調用其他Application.cfc函數。
什麼版本的CF?您是否嘗試過降低會話超時時間並開始會話,並在onSessionEnd中執行一個簡單的 以查看它是否被調用? –
2011-04-05 19:10:17
請從onSessionEnd() – 2011-04-05 19:13:38
發佈您的代碼請發佈您的'Application.cfc'代碼。 – 2011-04-05 21:18:30