You could use various things
- Store the info in the session
- Make a static collection, and dispose of the info manually after a given time
- Same as 2. but use something like MemoryCache with an expiration so you don't have to handle expiration manually
- Same as 3 but using the http cache
Here are some namespaces/ideas for you to check out
- System.Web.HttpContext.Current.Session
- private static Dictionary<userId, UserInfo> sessionInfo
- System.Runtime.Caching.MemoryCache.Default
- System.Web.HttpContext.Current.Cache
Personally i'd opt for the MemoryCache (it's newer and sort of replaces the httpCache), i use this in a project to implement a semi-generic class that uses the MemoryCache as a cache layer between the BLL & DAL.
Or the static Dictionary: create UserInfo, put it in the Dictionary, get it again, Update a value, and later remove it (same scenario with the built in cache versions).
The advantage of MemoryCache/Dictionary is that they don't need a reference to HttpContext and can thus be used outside of a web context. But that doesn't mean you can't use HttpContext instead (it's easier). You just have to weight the pros/cons of using that in a dal/bll or not.
For MemoryCache be sure to check out: http://msdn.microsoft.com/en-us/library/dd941875.aspx it's important to set these to keep your server from using too much memory