Hi nmufti,
Maybe you have misunderstood my meaning, The global data will only be run once for your entire application. so it is not based on single user.
From your description, the best way for your requirement is to use the Session object.
A session is the time for which a particular user interacts with a web application . During a session the unique identity of the user is maintained internally. A session ends if there is a session timeout or if you end the visitor session in code.
Sessions helps to preserve data across successive accesses. These can be done on a per user basis, via the use of session objects. Session objects give us the power to preserve user preferences and other user information when browsing a web application. To better understand the use of sessions, consider an example: Suppose you own a website in which you give the visitors the option to choose the background color of the pages they will browse. In such a case you need to remember the user’s choice on each of the page. This task can be accomplished using sessions.
ASP.NET Session State
http://msdn.microsoft.com/en-us/library/ms972429.aspx
Session FAQ
http://www.syncfusion.com/faq/aspnet/web_c9c.aspx
Underpinnings of the Session State Implementation in ASP.NET
http://msdn.microsoft.com/en-us/library/aa479041.aspx
Let me know whether that answers your question, or if I've missed something.