#region 解决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


或者

可以放在Global.asax中,也可以根本不管:

protected void Application_Start(object sender, EventArgs e)
{

DirectoryInfo dir = new DirectoryInfo(this.Server.MapPath("~/App_Data/ViewState/"));
       
if (!dir.Exists)
            dir.Create();
       
else
        {
            DateTime nt
= DateTime.Now.AddHours(-1);
           
foreach(FileInfo f in dir.GetFiles())

{

if (f.CreationTime < nt)
                    f.Delete();
            }
        }

}