You CAN store the dictionary object in Session state, but then you are locking that particular user session (meaning any subsequent requests by the same user) to the particular thread inside of ASP that the dictionary was first created on. Since an Apartment threaded object, of which Dictionary is one, can only run on the thread that created it, you are restricted to handling all session requests for this particular session on one thread. There are a pool of 10 threads available to ASP, and in order to support large numbers of users, ASP has to be able to dole out those threads to whatever request is coming in. If a request comes in that needs a particular thread, called "thread-affinity," and that thread is off processing another page, then the request will just sit there and wait, or "block," until that thread becomes available. Now when you scale this up over 10s, 100s, 1000s of users, you can see that there will be lots more blocking than actual processing.