2011-04-05 64 views
2

我有一個INSERT INTO日誌文件在onSessionStart和一個UPDATE在onSessionEnd。 我通過從Application.cfc中的其他地方調用onSessionEnd手動測試它,所以我知道它工作。onSessionEnd顯然不發射

但這是唯一一次被解僱。

我不知道onSessionEnd是否永遠不會被解僱。

+0

什麼版本的CF?您是否嘗試過降低會話超時時間並開始會話,並在onSessionEnd中執行一個簡單的以查看它是否被調用? – 2011-04-05 19:10:17

+1

請從onSessionEnd() – 2011-04-05 19:13:38

+1

發佈您的代碼請發佈您的'Application.cfc'代碼。 – 2011-04-05 21:18:30

回答

3

我在我的評論中得到了足夠的upvotes,我想我會讓它成爲如何調試onSessionEnd方法的答案。

首先,您需要記住,如果直接調用onSessionEnd,則會在常規請求上下文中調用它。這意味着它可以訪問在常規會話結束時被調用的變量,這些變量通常無法訪問。這意味着「通過調用onSessionEnd手動測試」不是測試方法的有效方法。

爲此,可靠地調試onSessionEnd方法的唯一方法是明智地使用cflog標籤。您需要添加cflog條目以在方法運行時標記,您需要捕獲錯誤,記錄錯誤或將cfcatch範圍轉儲到文件以供審閱。您還需要確保在方法中引用的任何內容都通過參數SessionScopeApplicationScope傳入,並且您沒有引用除ArgumentsServer以外的任何範圍。請參閱livedocs以供參考。

希望能幫助您找到問題的根源。

+1

哦!感謝丹(和所有)的評論!我正在使用會話變量並需要使用SessionScope變量。再次感謝! – 2011-04-06 18:52:03

1

我想補充一點,你甚至不能在onSessionEnd方法中調用其他Application.cfc函數。