Is a variable stored in Session deserialized once or multiple times throughout a page lifecycle?
asp.net, c#, session-variables
Solution
There is an in-memory copy of your Session state on each request. Therefore the only cost that you would be saving by locally copying a session variable is that of the cast from Object to your type. The in-memory copy is then added to Session at the end of the request.
Whether or not Session is serialized and deserialized on a page depends on what Session Provider you choose. For In-proc Session State, no serialization occurs. For Session Servers the object must be serialized first.
Problem
I would like to wrap Session variables in a manner similar to that discussed on CodeProject. ``` public static class WebSession { private const string CurrentUserKey = "CurrentUser"; private static HttpSessionState Session { get { return HttpContext.Current.Session; } } public static bool Exists { get { return Session != null; } } public static User CurrentUser { get { return Session[CurrentUserKey] as User; } set { Session[CurrentUserKey] = value; } } } ``` Here is my question: if I have to access `CurrentUser` multiple times in the same page, would I get a performance improvement by assigning it to a local variable instead of accessing the wrapping property? Or does the `HttpSessionState` make sure the object is only deserialized once per request, so that subsequent calls in the same http request don't cost any more? Thanks, Aaron