コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
        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>
        }
コード例 #3
0
        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));
            }
        }