#region 解决ViewState过于庞大的问题
//由于这里添加了目录,所以要建立App_Data/ViewState目录.
protected override object LoadPageStateFromPersistenceMedium()
{
string viewStateID = (string)((Pair)base.LoadPageStateFromPersistenceMedium()).Second;
string stateStr = (string)Cache[viewStateID];
if (stateStr == null)
{
string fn = Path.Combine(this.Request.PhysicalApplicationPath, @"App_Data/ViewState/" + viewStateID);
stateStr = File.ReadAllText(fn);
}
return new ObjectStateFormatter().Deserialize(stateStr);
}
protected override void SavePageStateToPersistenceMedium(object state)
{
string value = new ObjectStateFormatter().Serialize(state);
string viewStateID = (DateTime.Now.Ticks + (long)this.GetHashCode()).ToString(); //产生离散的id号码
string fn = Path.Combine(this.Request.PhysicalApplicationPath, @"App_Data/ViewState/" + viewStateID);
//ThreadPool.QueueUserWorkItem(File.WriteAllText(fn, value));
File.WriteAllText(fn, value);
Cache.Insert(viewStateID, value);
base.SavePageStateToPersistenceMedium(viewStateID);
}
#endregion 去掉.net页面中的<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
最新推荐文章于 2017-04-21 09:57:13 发布
本文介绍了一种优化ViewState存储的方法,通过将ViewState数据缓存并持久化到文件系统中,减轻服务器内存压力,适用于ViewState数据量大的场景。
1567

被折叠的 条评论
为什么被折叠?



