/// <devdoc> /// To be supplied. /// </devdoc> public override void Save() { bool requiresControlStateInSession = false; object clientData = null; Triplet vsTrip = ViewState as Triplet; // no session view state to store. if ((ControlState != null) || ((vsTrip == null || vsTrip.Second != null || vsTrip.Third != null) && ViewState != null)) { HttpSessionState session = Page.Session; string sessionViewStateID = Convert.ToString(DateTime.Now.Ticks, 16); object state = null; requiresControlStateInSession = Page.Request.Browser.RequiresControlStateInSession; if (requiresControlStateInSession) { // ClientState will just be sessionID state = new Pair(ViewState, ControlState); clientData = sessionViewStateID; } else { // ClientState will be a <sessionID, ControlState> state = ViewState; clientData = new Pair(sessionViewStateID, ControlState); } string sessionKey = _viewStateSessionKey + sessionViewStateID; session[sessionKey] = state; Queue queue = session[_viewStateQueueKey] as Queue; if (queue == null) { queue = new Queue(); session[_viewStateQueueKey] = queue; } queue.Enqueue(sessionKey); SessionPageStateSection cfg = RuntimeConfig.GetConfig(Page.Request.Context).SessionPageState; int queueCount = queue.Count; if (cfg != null && queueCount > cfg.HistorySize || cfg == null && queueCount > SessionPageStateSection.DefaultHistorySize) { string oldSessionKey = (string)queue.Dequeue(); session.Remove(oldSessionKey); } } if (clientData != null) { Page.ClientState = Util.SerializeWithAssert(StateFormatter2, new Pair(requiresControlStateInSession, clientData), Purpose.WebForms_SessionPageStatePersister_ClientState); } }
static void Main(string[] args) { // <Snippet1> // Get the Web application configuration. System.Configuration.Configuration configuration = WebConfigurationManager.OpenWebConfiguration( "/aspnetTest"); // Get the <sessionPageState> section. SessionPageStateSection sessionPageState = (SessionPageStateSection)configuration.GetSection( "system.web/sessionPageState"); // </Snippet1> // <Snippet2> // Get the history size. int historySize = sessionPageState.HistorySize; string msg = String.Format( "Current history size: {0}\n", historySize.ToString()); Console.Write(msg); if (!sessionPageState.IsReadOnly()) { // Double current history size. sessionPageState.HistorySize = 2 * sessionPageState.HistorySize; configuration.Save(); historySize = sessionPageState.HistorySize; msg = String.Format( "New history size: {0}\n", historySize.ToString()); Console.Write(msg); } // </Snippet2> }
public override void Save() { bool x = false; object y = null; Triplet viewState = base.ViewState as Triplet; if ((base.ControlState != null) || ((((viewState == null) || (viewState.Second != null)) || (viewState.Third != null)) && (base.ViewState != null))) { HttpSessionState session = base.Page.Session; string str = Convert.ToString(DateTime.Now.Ticks, 0x10); object obj3 = null; x = base.Page.Request.Browser.RequiresControlStateInSession; if (x) { obj3 = new Pair(base.ViewState, base.ControlState); y = str; } else { obj3 = base.ViewState; y = new Pair(str, base.ControlState); } string str2 = "__SESSIONVIEWSTATE" + str; session[str2] = obj3; Queue queue = session["__VIEWSTATEQUEUE"] as Queue; if (queue == null) { queue = new Queue(); session["__VIEWSTATEQUEUE"] = queue; } queue.Enqueue(str2); SessionPageStateSection sessionPageState = RuntimeConfig.GetConfig(base.Page.Request.Context).SessionPageState; int count = queue.Count; if (((sessionPageState != null) && (count > sessionPageState.HistorySize)) || ((sessionPageState == null) && (count > 9))) { string name = (string)queue.Dequeue(); session.Remove(name); } } if (y != null) { base.Page.ClientState = Util.SerializeWithAssert(base.StateFormatter, new Pair(x, y)); } }