问一个关于反序列化的问题,在webservice上写的

Franciswink 2010-04-16 09:38:57
我做了一个服务程序,和一个客户程序。
我通过客户程序调用服务器程序 对一个byte型数组进行反序列化。
但是在客户端调用时就会抛异常:说是 服务器无法处理。
然后会提示是反序列化出的问题,请各位高人指点一下哇。
=======================================================================================================
异常:
System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.Runtime.Serialization.SerializationException: Unable to find assembly 'ClientForm, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
at System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo.GetAssembly()
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetType(BinaryAssemblyInfo assemblyInfo, String name)
at System.Runtime.Serialization.Formatters.Binary.ObjectMap..ctor(String objectName, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[] typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32 objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable)
at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryObjectWithMapTyped record)
at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryHeaderEnum binaryHeaderEnum)
at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream)
at SeverviceWrong.App_Code.Serialize.SerializeDIY.ByteArrayToObject(Byte[] b) in E:\Graduate\SeverWrong\WebService1\App_Code\Serialize\SerializeDIY.cs:line 33
at SeverviceWrong.ServiceWrong.GetObjectFromClient(String Clmd5hash, Byte[] Clcrypt) in E:\Graduate\SeverWrong\WebService1\ServiceWrong.asmx.cs:line 95
======================================================================================================
我序列化和反序列化的代码:

public class SerializeDIY
{
//实现序列化的方法
public static byte[] ObjectToByteArray(object c)
{


MemoryStream ms = new MemoryStream();
BinaryFormatter b = new BinaryFormatter();
b.Serialize(ms, c);
ms.Close();
return ms.ToArray();
}
//实现反序列化的方法
public static object ByteArrayToObject(byte[] b)
{
MemoryStream ms = new MemoryStream(b, 0, b.Length);
BinaryFormatter bb = new BinaryFormatter();

return bb.Deserialize(ms);
}



}
...全文
180 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Franciswink 2010-04-16
  • 打赏
  • 举报
回复
数据又写不到 服务器的数据库里了。。。
Franciswink 2010-04-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 isslkefks5 的回复:]
=======================
软件创业QQ qun群:103815692

SbMUFbDUWw7hjRC1
[/Quote]
公司不让上QQ 哈哈
Franciswink 2010-04-16
  • 打赏
  • 举报
回复
我去试试吧
Franciswink 2010-04-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zswang 的回复:]
简单说,你系列化的类型,客户端和服务器端都必须有。
最好把这个类型声明在第三方库中,双方都引用,这样应该就好了。
系列化的信息中包括了,类型所在的库名和版本。
[/Quote]
貌似明白点
Franciswink 2010-04-16
  • 打赏
  • 举报
回复
继续顶贴
王集鹄 2010-04-16
  • 打赏
  • 举报
回复
简单说,你系列化的类型,客户端和服务器端都必须有。
最好把这个类型声明在第三方库中,双方都引用,这样应该就好了。
系列化的信息中包括了,类型所在的库名和版本。
Franciswink 2010-04-16
  • 打赏
  • 举报
回复
顶贴.....
Franciswink 2010-04-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zswang 的回复:]
Unable to find assembly 'ClientForm, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

确认客户端里是否引用了ClientForm库
[/Quote]
这个clientForm 就是我的客户端
王集鹄 2010-04-16
  • 打赏
  • 举报
回复
Unable to find assembly 'ClientForm, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

确认客户端里是否引用了ClientForm库
Franciswink 2010-04-16
  • 打赏
  • 举报
回复
自己顶了。。。
Franciswink 2010-04-16
  • 打赏
  • 举报
回复
谁来帮帮忙啊
Franciswink 2010-04-16
  • 打赏
  • 举报
回复
我自己先顶

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧