Let me explain to you what is happening. This issue is related to multiple roles on the Internet.
What are azure web roles?
Web roles are VHD, i.e. system images that are actually copied with your data / website. His trick is to distribute, initialize, and copy.
How do web roles work?
A load balancer evenly distributes incoming traffic between roles. This means that a session created in one web role will be invalid in another. Its not just sessions, even forms authentication will not work.
Why?
Because session / form validation uses machineKey for encryption / hashing. And each web role / virtual machine has a different machineKey. Now you see why this works sometimes, and sometimes not. When the request reaches the same role of the VM that created the session, it works, and when not, no. In general, it will only work for 1: there are no role times for each session created (approximately).
Decision
As if you host your site in a web farm. Thus, you should see how to make your site run in a web farm. Or you can use only one web role if you use 2 small vm / role, instead you can use only one big virtual machine, but it all depends on how your application works, so you should first check what is best works, multiple virtual machines or a large VM. In addition, with one virtual machine you lose reliability, your site will be inaccessible if your role is reduced.
Look for a solution using table storage here http://www.intertech.com/Blog/Post/Session-State-in-Windows-Azure.aspx
EDIT Instead of saving the token in the session, use cookies, but you will not solve the fundamental problem, and you will encounter many problems if you do not do something with the main problem.