No, using static variables for this is not the way to go:
- If your AppDomain is recycled, all your static variables will be "reset"
- Static variables don't scale horizontally - if you load-balance your application, a user who hits one server then a different one won't see the data store in the static variables in the first server
- Most importantly, static variables will be shared by all access to that server... it won't be on a per-user basis at all... whereas from your description, you wouldn't want user X to see user Y's information.
Fundamentally, you have two choices for propagating information around your application:
- Keep it client-side, so each request gives the information from the previous steps. (This can become unwieldy with large amounts of information, but can be useful for simple cases.)
- Keep it server-side, ideally in some persistent way (such as a database) with the client providing a session identifier.
If you can use load-balancing to keep all users going to the same server, and if you don't mind sessions being lost when the AppDomain is recycled1 or a server going down, you can keep it in memory, keyed by session ID... but be careful.
1 There may be mechanisms in ASP.NET to survive this, propagating session information from one AppDomain to another - I'm not sure
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…