位置:海鸟网 > IT > ASP.NET >

ASP.NET中纠结的Session备忘

使用中的问题: 

一个与StateServer,这样可以在数据库或状态服务中保存Session,我只化了3分时间就把Web.config中的配置调整成StateServer方式,本以为这样就天下太平了,结果发现我错了,系统运行一段时间(或者说一个用户登录后点个7,8下)就会报错,错误点是SessionStateItemCollection.Deserialize。再接下来的时间里我想了各种办法来解决这个问题,我甚至将自定义类型,先使用xml序列化成字符串后再保存到Session里这样Session里保存的就是简单的string类型了,结果问题依旧,最后试了SqlServer方式,依然失败。 现阶段是将一些短数据放到cookie里,其他长数据在使用时从数据库中加载,好在当时对存储在Session里的数据存取进行了简单的封装,页面里没有直接使用Session["xx"]=yy; 这样的代码,不然项目里200多个并且出自4个程序员之手的页面改起来够崩溃了。

程序里主要代码如下:

public class UserSetting{

  public static T LoadSession<T>(string key) where T:class{

    return HttpContext.Current.Session[key] as T;

   }

     public static void SaveSession<T>(string key, T data)where T:class
      {
            HttpContext.Current.Session[key] = data;

       }

    //........其他属性

}