.net 序列化与反序列化的一个问题,望牛人指教~~~

背景:创建了一个库,库里面有一个实体类,该类用于序列化。类包含部分属性。我将该类序列化到一个txt文件,获取到该文件的序列化字符串,然后将其转换为byte数组存放到ora... 背景:创建了一个库,库里面有一个实体类,该类用于序列化。类包含部分属性。我将该类序列化到一个txt文件,获取到该文件的序列化字符串,然后将其转换为byte数组存放到oracle数据库中,数据库使用的blob存储。
问题:在另外一个项目中同样引用了这个库,并将字节数组从数据库取出,进行反序列化,但失败~~
异常如下:
捕捉到 System.Runtime.Serialization.SerializationException
Message="没有对象“201326592”的映射。"
Source="mscorlib"
StackTrace:
在 System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObject()
在 System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
在 System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
在 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
在 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream)

序列化的项目是一个web项目。反序列化位于另外一个库中,该库引用了包含序列化类的库。

请各位指教,感激不甚!!!!!
大伙儿没说中要害啊。
我关键的问题就是在反序列化为对象的时候失败了。

BinaryFormatter
四楼大哥说的我了解。
这样吧,解释一下.net 类库程序集、类库引用机制、什么是程序集映像和程序集ID的接分。
展开
 我来答
毋诗槐3q
2011-01-13 · TA获得超过139个赞
知道答主
回答量:92
采纳率:0%
帮助的人:73.1万
展开全部
看不到你的代码 不知道是怎么写的 提供一下的我自己的序列化方法
需要序列化的class前面加[Serializable]关键字:
//实例化MemoryStream
MemoryStream memoryStream = new MemoryStream();
//实例化Formatter
BinaryFormatter formatter = new BinaryFormatter();
//序列化类为base64字符串
formatter.Serialize(memoryStream, this);
//设定文件流中的位置
memoryStream.Position = 0;
//反序列化,在你的实例中memoryStream就是取到的序列化后的字符串
formatter.Deserialize(memoryStream);
Deserialize返回是一个object类型,可以强制转化为原始的类
本人这样在实际中使用没有问题,你如果无法使用,贴下代码出来
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
贼寇在何方
2011-01-13 · TA获得超过770个赞
知道小有建树答主
回答量:759
采纳率:0%
帮助的人:707万
展开全部
你用的是哪种方式的序列号?
二进制的还是XML还是Json什么的?

补充:
二进制的序列化方式,那要求就比较苛刻,最好是一台机器是做序列化和反序列化。在不同的机器上做,必须保证环境完全一致,比如CPU类型、操作系统和.Net framework版本。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-01-13
展开全部
估计你的流程不对,按照你所说你把目标序列化成了字符串,然后转换成字节数组保存在数据库,取的时候应该把取回的数组转化成你的字符串,在把字符串反序列化。
我感觉直接把目标搞成字节数组保存,取出直接还原,你可以用filestream memorystream.很多 仔细检查下就能发现毛病
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6eed2f8
2011-01-13 · TA获得超过5082个赞
知道大有可为答主
回答量:3423
采纳率:0%
帮助的人:3783万
展开全部
把序列化以后的二进制文件直接存数据库就行了
不需要中间字符串,要的是二进制数据
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式