onSessionEnd видимо не стреляет - PullRequest
2 голосов
/ 05 апреля 2011

У меня есть INSERT INTO Logfile в onSessionStart и ОБНОВЛЕНИЕ в onSessionEnd. Я проверил это вручную, вызвав onSessionEnd из другого места в Application.cfc, так что я знаю, что он работает.

Но это единственный раз, когда его увольняют.

Интересно, никогда не запускается onSessionEnd.

Ответы [ 2 ]

3 голосов
/ 06 апреля 2011

Я получил достаточно голосов за свой комментарий, я решил, что я сделаю это ответом на то, как отлаживать onSessionEnd методы.

Прежде всего, вы должны помнить, что если вы вызываете onSessionEnd напрямую, он вызывается во время обычного контекста запроса. Это означает, что у него есть доступ к переменным, к которым у него обычно нет доступа, если он вызывается во время обычного завершения сеанса. Это означает, что тестирование «вручную путем вызова onSessionEnd» не является допустимым способом тестирования метода.

С этой целью единственный способ надежной отладки метода onSessionEnd - это разумное использование тега cflog. Вам нужно добавить записи cflog, чтобы помечать при запуске метода, вам нужно иметь возможность перехватывать ошибки, регистрировать ошибки или выгружать области cfcatch в файл для просмотра. Вам также необходимо убедиться, что все, на что вы ссылаетесь в методе, передается через аргументы SessionScope и ApplicationScope, и что вы не ссылаетесь ни на какие области, кроме Arguments и Server. См. liveocs для справки.

Надеюсь, это поможет вам найти источник вашей проблемы.

1 голос
/ 27 марта 2012

Я бы добавил, что вы даже не можете вызывать другие функции Application.cfc из метода onSessionEnd.

...