Anders Liu (lover_P)的.NET天空

传播知识基于掌握知识,但又高于掌握知识。我要做一个掌握很多知识的传播知识的人!

原创 ASP.NET存储状态的一个问题收藏

通常,ASP.NET存储会话状态有三种方式——InProc、StateServer和SQLServer。一般最常用的是第一种,在这种情况下,可以用类似这样的语法来存储会话状态:Session["key"] = val。其中val可以使任何类型的对象。

但如果使用StateServer或SQLServer,则要求val的类型必须是一个可序列化类型,因为ASP.NET应用在于状态服务器之间交换数据时,需要对对象进行序列化。如果val不可序列化(有私有域/属性并且没有指定自定义序列化特性),则会在运行时出现如下异常:

“/”应用程序中的服务器错误。


无法序列化会话状态。在“StateServer”“SQLServer”模式下,ASP.NET 将序列化会话状态对象,因此不允许使用无法序列化的对象或 MarshalByRef 对象。如果自定义会话状态存储在“Custom”模式下执行了类似的序列化,则适用同样的限制。

解决方法有这样几种:

1 尽量使用基本类型的对象来存放数据

2 自定义类型只使用公有域/属性

3 为自定义类型实现序列化特性

……

几种方法优劣暂不作说明。我偷懒用了第一种。

发表于 @ 2007年01月19日 09:58:00|评论(loading...)

新一篇: 用Array.Sort对字符串进行排序的问题 | 旧一篇: Windows Mobile 5.0 Smartphone与Vista同步

用户操作
[即时聊天] [发私信] [加为好友]
Anders Liu
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
Anders Liu的公告


我写的书


购买途径:
文章分类
收藏
    存档
    软件项目交易
    Csdn Blog version 3.1a
    Copyright © Anders Liu