日期:2014-05-18  浏览次数:20390 次

急,asp.net中序列化问题
我在web中设置了<sessionState mode='StateServer' stateConnectionString='tcpip=127.0.0.1:42424' sqlConnectionString='data source=127.0.0.1;Trusted_Connection=yes' cookieless='false' timeout='1200'/> 
刚刚添加了一个页面,但是运行后提示:无法序列化会话状态。在“StateServer”或“SQLServer”模式下,ASP.NET 将序列化会话状态对象,因此不允许使用无法序列化的对象或 MarshalByRef 对象。如果自定义会话状态存储在“Custom”模式下执行了类似的序列化,则适用同样的限制。[SerializationException: 程序集“System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”中的类型“System.Web.UI.WebControls.FileUpload”未标记为可序列化。]
 
如果把mode类型改成InProc 就可以,但是我在不想改变mode的类型,请问如何修改我的页面代码 ,谢谢 首次遇到这样的问题,请大家帮助
部分代码如下:

  /// <summary>
  /// 用于保存当前页面上传文件控件集到缓存中
  /// </summary>
  protected void SaveFUC()
  {
  ArrayList AL = new ArrayList();
  foreach (System.Web.UI.Control C in tabFU.Controls)
  {
  if (C.GetType().ToString() == "System.Web.UI.HtmlControls.HtmlTableRow")
  {
  HtmlTableCell HTC = (HtmlTableCell)C.Controls[0];
  foreach (System.Web.UI.Control FUC in HTC.Controls)
  {
  //判断该控件是否为上传控件(FileUpLoad),如果是,则添加到ArrayList中
  if (FUC.GetType().ToString() == "System.Web.UI.WebControls.FileUpload")
  {
  FileUpload FU = (FileUpload)FUC;
  AL.Add(FU);
  }
  }
  }
  }

------解决方案--------------------
说的很清楚
“System.Web.UI.WebControls.FileUpload”未标记为可序列化。]

这个对象不支持序列化呀