There are some situations when session will timeout without the
Session_onEnd firing. Don't rely on it, and use this event with
additional check. If it's important to find the timeout, log each
session in the database (sessionId, date-time), update it (date-time)
on user activity (and on Session_onEnd) and regulary check if database
still has any "active" session after certain period of time (=timeout).