网上找来的代码,备用。具体如下:

protected override object LoadPageStateFromPersistenceMedium()
    {
        var viewStateID 
= (string)(((Pair)base.LoadPageStateFromPersistenceMedium()).Second); 
        var stateStr 
= (string)Cache[viewStateID];
        
if (stateStr == null)
        {
            var fn 
= Path.Combine(this.Request.PhysicalApplicationPath, @"App_Data/ViewState/" + viewStateID);
            
if (File.Exists(fn)) //防止删除报错
            {
                stateStr 
= File.ReadAllText(fn);
            }
        }
        
return new ObjectStateFormatter().Deserialize(stateStr);
    }

    
protected override void SavePageStateToPersistenceMedium(object state)
    {
        var value 
= new ObjectStateFormatter().Serialize(state);  //获取页面状态
        var viewStateID = (DateTime.Now.Ticks + (long)this.GetHashCode()).ToString(); //产生离散的id号码  
        var fn = Path.Combine(this.Request.PhysicalApplicationPath, @"App_Data/ViewState/" + viewStateID);
        ThreadPool.QueueUserWorkItem(obj 
=> File.WriteAllText(fn, value)); //插入线程池中,写入硬盘
        Cache.Insert(viewStateID, value);   //用sesson也可以
        base.SavePageStateToPersistenceMedium(viewStateID);

    }

相关文章:

  • 2021-12-29
  • 2021-11-25
猜你喜欢
  • 2021-10-02
  • 2022-12-23
  • 2021-12-13
  • 2022-12-23
  • 2021-11-30
  • 2021-09-03
  • 2021-12-22
相关资源
相似解决方案