示例#1
0
        public override void Save()
        {
            if (cache.Loaded)
            {
                string cacheKey = CacheKeyPrefix + Guid.NewGuid().ToString("N"); // dynamic guid
                Pair   data     = new Pair(ViewState, ControlState);
                string state    = StateFormatter.Serialize(data);


                bool cached = false;
                try
                {
                    cached = cache.Insert(cacheKey, state);     //insert without grouping
                }
                catch (Exception e)
                {
                    if (!cached)
                    {
                        trace.WriteTrace(TraceSeverity.WarningEvent, TraceCategory.Content, "Could not cache view state." + e.Message);
                    }
                }

                if (cached)
                {
                    _hiddenFiledPagePersister.ViewState = cacheKey; // send dynamic guid to client
                    ContentPerfCounters.Current.UpdateViewstateSize(state.Length);
                    ContentPerfCounters.Current.IncrementViewstateAdditions();
                    trace.WriteTrace(TraceSeverity.InformationEvent, TraceCategory.Content, "view state cached: " + cacheKey);
                }
            }
            else
            {
                trace.WriteTrace(TraceSeverity.CriticalEvent, TraceCategory.Content, " Cache is not loaded. ");

                _hiddenFiledPagePersister.ViewState    = ViewState;
                _hiddenFiledPagePersister.ControlState = ControlState;
            }

            _hiddenFiledPagePersister.Save();
        }
        //
        // Summary:
        //     Serializes any object state contained in the System.Web.UI.PageStatePersister.ViewState
        //     or the System.Web.UI.PageStatePersister.ControlState property and writes the
        //     state to the repository.
        public override void Save()
        {
            if (base.ViewState == null && base.ControlState == null)
            {
                return;
            }

            IStateFormatter formatter = this.StateFormatter;
            Pair            statePair = new Pair(ViewState, ControlState);

            // Serialize the statePair object to a string.
            string serializedState = formatter.Serialize(statePair);

            ViewStateInfo info = new ViewStateInfo(serializedState);

            string viewStateKey = Page.Request.Form[ViewStateHiddenFieldName] as string;

            if (!string.IsNullOrEmpty(viewStateKey))
            {
                info.Id = viewStateKey;
            }

            Repository.SaveViewState(info);

            if (UseDefaultViewStateHiddenField)
            {
                // Save key in __VIEWSTATE hidden field
                HiddenFieldPageStatePersister _hiddenFiledPagePersister = new HiddenFieldPageStatePersister(Page);
                _hiddenFiledPagePersister.ViewState = info.Id;
                _hiddenFiledPagePersister.Save();
            }
            else
            {
                // Register hidden field to store cache key in
                Page.ClientScript.RegisterHiddenField(ViewStateHiddenFieldName, info.Id);
            }
        }