使用中的问题: 一个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 } //........其他属性 } (责任编辑:admin) |