页面做完后,查看源代码,有个<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value=“”
input里的value的值是一段很长的字符串,这是什么,是正常吗?为什么会产生这么长的值?怎样能使他不产生呢?
/////////////////////////////////////////
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNjQ2MzIyMDY3D2QWAgIDD2QWAgIJDzwrAA0BAA8WBB4LXyFEYXRhQm91bmRnHgtfIUl0ZW1Db3VudAIOZBYCZg9kFiJmD2QWHGYPD2QWAh4Fc3R5bGUFFGJvcmRlci1jb2xvcjojQ0NDQ0NDZAIBDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0NkAgIPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQ2QCAw8PZBYCHwIFFGJvcmRlci1jb2xvcjojQ0NDQ0NDZAIEDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0NkAgUPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQ2QCBg8PZBYCHwIFFGJvcmRlci1jb2xvcjojQ0NDQ0NDZAIHDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0NkAggPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQ2QCCQ8PZBYCHwIFFGJvcmRlci1jb2xvcjojQ0NDQ0NDZAIKDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0NkAgsPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQ2QCDA8PZBYCHwIFFGJvcmRlci1jb2xvcjojQ0NDQ0NDZAINDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0NkAgEPD2QWBh4Lb25tb3VzZW92ZXIFZmN1cnJlbnRjb2xvcj10aGlzLnN0eWxlLmJhY2tncm91bmRDb2xvcjt0aGlzLnN0eWxlLmJhY2tncm91bmRDb2xvcj0nI2M5ZGVmYScsdGhpcy5zdHlsZS5mb250V2VpZ2h0PScnOx4Kb25tb3VzZW91dAVBdGhpcy5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9Y3VycmVudGNvbG9yLHRoaXMuc3R5bGUuZm9udFdlaWdodD0nJzsfAgULQ3Vyc29yOmhhbmQWHGYPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQ2QCAQ8PFgIeBFRleHQFATEWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQ2QCAg8PZBYCHwIFFGJvcmRlci1jb2xvcjojQ0NDQ0NDFgJmDxUCIFByb2plY3RfQWRkX0NvZGVfRWRpdC5hc3B4P2lkPTMyCi5uZXTmioDmnK9kAgMPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQxYCZg8VAQblvKDlj69kAgQPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQxYCZg8VARXmmoLml7bmsqHmnInlkIjkvZzogIVkAgUPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQxYCZg8VAQvvv6U1LjAwMC4wMGQCBg8PZBYCHwIFFGJvcmRlci1jb2xvcjojQ0NDQ0NDFgJmDxUBB++/pTAuMDBkAgcPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQxYCZg8VAQfvv6UwLjAwZAIIDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0MWAmYPFQEL5a6hIOaguCDkuK1kAgkPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQxYCZg8VAQnnvJbnqIvlraZkAgoPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQxYCZg8VAQzkv6Hmga/lrabpmaJkAgsPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQxYCZg8VAQoyMDEyLTAyLTIzZAIMDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0MWAmYPFQEKMjAxMi0wNi0yNGQCDQ8PZBYCHwIFFGJvcmRlci1jb2xvcjojQ0NDQ0NDZAICDw9kFgYfAwVmY3VycmVudGNvbG9yPXRoaXMuc3R5bGUuYmFja2dyb3VuZENvbG9yO3RoaXMuc3R5bGUuYmFja2dyb3VuZENvbG9yPScjYzlkZWZhJyx0aGlzLnN0eWxlLmZvbnRXZWlnaHQ9Jyc7HwQFQXRoaXMuc3R5bGUuYmFja2dyb3VuZENvbG9yPWN1cnJlbnRjb2xvcix0aGlzLnN0eWxlLmZvbnRXZWlnaHQ9Jyc7HwIFC0N1cnNvcjpoYW5kFhxmDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0NkAgEPDxYCHwUFATIWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQ2QCAg8PZBYCHwIFFGJvcmRlci1jb2xvcjojQ0NDQ0NDFgJmDxUCIFByb2plY3RfQWRkX0NvZGVfRWRpdC5hc3B4P2lkPTU4CmphdmHmioDmnK9kAgMPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQxYCZg8VAQblvKDlj69kAgQPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQxYCZg8VAQExZAIFDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0MWAmYPFQEE77+lMWQCBg8PZBYCHwIFFGJvcmRlci1jb2xvcjojQ0NDQ0NDFgJmDxUBB++/pTAuMDBkAgcPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQxYCZg8VAQfvv6UwLjAwZAIIDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0MWAmYPFQEM5a6h5qC46YCa6L+HZAIJDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0MWAmYPFQEJ57yW56iL5a2mZAIKDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0MWAmYPFQEM5aSW6K+t5a2m6ZmiZAILDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0MWAmYPFQELMjAxMi0wNi0yNCBkAgwPD2QWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQxYCZg8VAQsyMDEyLTA3LTE0IGQCDQ8PZBYCHwIFFGJvcmRlci1jb2xvcjojQ0NDQ0NDZAIDDw9kFgYfAwVmY3VycmVudGNvbG9yPXRoaXMuc3R5bGUuYmFja2dyb3VuZENvbG9yO3RoaXMuc3R5bGUuYmFja2dyb3VuZENvbG9yPScjYzlkZWZhJyx0aGlzLnN0eWxlLmZvbnRXZWlnaHQ9Jyc7HwQFQXRoaXMuc3R5bGUuYmFja2dyb3VuZENvbG9yPWN1cnJlbnRjb2xvcix0aGlzLnN0eWxlLmZvbnRXZWlnaHQ9Jyc7HwIFC0N1cnNvcjpoYW5kFhxmDw9kFgIfAgUUYm9yZGVyLWNvbG9yOiNDQ0NDQ0NkAgEPDxYCHwUFATMWAh8CBRRib3JkZXItY29sb3I6I0NDQ0NDQ2QCA">
[解决办法]
如果它确实很大(10K根本不算大!而你贴的远远小于10K),你可以写这个代码:
using System;using System.IO;using System.Linq;using System.Runtime.Serialization.Formatters.Binary;using System.Threading;using System.Web.UI;public class VPage : Page{ static private DirectoryInfo _Dir; private static DirectoryInfo Dir { get { if (_Dir == null) { _Dir = new DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App_Data")); if (!_Dir.Exists) _Dir.Create(); _Dir = new DirectoryInfo(Path.Combine(_Dir.FullName, "ViewState")); if (!_Dir.Exists) _Dir.Create(); } return _Dir; } } protected override object LoadPageStateFromPersistenceMedium() { PageStatePersister ps = this.PageStatePersister; ps.Load(); if (ps.ControlState != null) ps.ControlState = 反序列化对象((string)ps.ControlState); if (ps.ViewState != null) ps.ViewState = 反序列化对象((string)ps.ViewState); return new Pair(ps.ControlState, ps.ViewState); } protected override void SavePageStateToPersistenceMedium(object state) { PageStatePersister ps = this.PageStatePersister; if (state is Pair) { ps.ControlState = ((Pair)state).First; ps.ViewState = ((Pair)state).Second; } else ps.ViewState = state; if (ps.ControlState != null) ps.ControlState = 序列化对象(ps.ControlState); if (ps.ViewState != null) ps.ViewState = 序列化对象(ps.ViewState); ps.Save(); } private object 反序列化对象(string stateID) { if (stateID == null) return null; object state = Cache[stateID]; if (state == null) using (var stream = File.OpenRead(Path.Combine(Dir.FullName, stateID))) state = new BinaryFormatter().Deserialize(stream); else Cache.Remove(stateID); return state; } private string 序列化对象(object obj) { string stateID = Guid.NewGuid().ToString("N"); Cache.Insert(stateID, obj, null, DateTime.Now.AddMinutes(5), System.Web.Caching.Cache.NoSlidingExpiration); using (var stream = File.Create(Path.Combine(Dir.FullName, stateID))) new BinaryFormatter().Serialize(stream, obj); return stateID; } static VPage() { ThreadPool.QueueUserWorkItem(h => { var et = DateTime.Now.AddMinutes(-30); Dir.GetFiles() .Where(f => f.LastAccessTime < et) .ToList() .ForEach(f => { try { f.Delete(); } catch { } }); }); }}