Each time you call get tasks, update tasks, IsTicketValid gets called.

This results in a database hit.

wouldn't it make sense to have asp.net sessions instead?  Or some other implementation....

Seems we need to implement more advanced caching