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); } }