建站学 - 轻松建站从此开始!

建站学-个人建站指南,网页制作,网站设计,网站制作教程

当前位置: 建站学 > 网站开发 > asp.net教程 >

ASP.NET中纠结的Session备忘

时间:2011-05-11 16:42来源: 作者: 点击:
一个Asp.net的CRM项目在Session中存储自定义类型(可序列化的),开始使用的是InProc方式,几个月过去了一切都很和谐,但是最近随着使用人数的增加进程内Session经常丢失,于是业务员就很郁闷,好在MS提供了SqlServer与StateServer,这样可以在数据库或状态服务中保存Ses

使用中的问题: 

一个Asp.net的CRM项目在Session中存储自定义类型(可序列化的),开始使用的是InProc方式,几个月过去了一切都很和谐,但是最近随着使用人数的增加进程内Session经常丢失,于是业务员就很郁闷,好在MS提供了SqlServer与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;

       }

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

}

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片