The HttpSessionState class provides server-side
state management that is stored on a per-client basis. The
HttpSessionState class exposes a key/value
collection of items that can store simple value types or instances of
any serializable .NET class. You can also store instances of your own
custom objects in session state, provided you make them serializable
by adding the SerializableAttribute to the class
declaration. You can add and access items in the
HttpSessionState collection as you would with
other ASP.NET collections, including
System.Web.HttpApplicationState and
System.Web.Caching.Cache. Unlike these classes,
session state can be stored outside of the main ASP.NET process. This
allows it to be shared across multiple computers in a web farm and
persist after server restarts.
The HttpSessionState class combines two state
collections: Contents and
StaticObjects. The
StaticObjects collection contains the application
state objects that are defined in the
global.asax file with <object
runat="server"> tags. This collection is immutable. The
Contents collection contains all the state objects
added at runtime.
The Item collection is the default indexer for
HttpSessionState, so you can use the name of a
state object as an index, as in: Session["userName"] =
"Lucy";. If you assign a value to a state object that does
not exist, it is created automatically. Items are stored as the
generic System.Object type and must be cast to the
appropriate types when you retrieve them.
Other properties allow you to get information about whether or not
the session has just been created with the current request
(IsNewSession) and what type of session ID
transmission (IsCookieless) and session storage
(Mode) is being used. You can use the
SessionID property to retrieve the session ID
string, but you will not need to, as it is created and managed
automatically by the ASP.NET framework. A reference is provided to
the HttpSessionState class through the built-in
Session object. Use Abandon( )
to end a session immediately and release memory occupied by session
state objects without waiting for the session to time out.
public sealed class HttpSessionState : ICollection, IEnumerable {
// Public Instance Properties
public int CodePage{set; get; }
public HttpSessionState Contents{get; }
public int Count{get; } // implements ICollection
public bool IsCookieless{get; }
public bool IsNewSession{get; }
public bool IsReadOnly{get; }
public bool IsSynchronized{get; } // implements ICollection
public KeysCollection Keys{get; }
public int LCID{set; get; }
public SessionStateMode Mode{get; }
public string SessionID{get; }
public HttpStaticObjectsCollection StaticObjects{get; }
public object SyncRoot{get; } // implements ICollection
public object this[int index]{set; get; }
public object this[string name]{set; get; }
public int Timeout{set; get; }
// Public Instance Methods
public void Abandon( );
public void Add(string name, object value);
public void Clear( );
public void CopyTo(Array array, int index); // implements ICollection
public IEnumerator GetEnumerator( ); // implements IEnumerable
public void Remove(string name);
public void RemoveAll( );
public void RemoveAt(int index);
}