客户端添加服务引用以后,调用服务的这个方法,会报错,内容如下:
格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出错: retreiveMessageResponse。InnerException 消息是“第 1 行 327 位置处出现错误。 元素“http://tempuri.org/:anyType”含有“http://tempuri.org/:MessageItem”数据协定的数据。反序列化程序不知道映射到此协定的类型。请将与“MessageItem”对应的类型添加到已知类型的列表中,例如,通过使用 KnownTypeAttribute 属性或通过将其添加到传递给 DataContractSerializer 的已知类型的列表等方法。”。有关详细信息,请参阅 InnerException。
在网上查了好多,也没一个可以解决问题的,提示又不是很看得懂,希望高手指点,最好能讲的浅显易懂一点的解决方案哈,万分感谢!
5 个解决方案
#1
方法1:把你的自定义类型MessageItem变成byte[]
方法2:在调用websevice的机器上的那个代理类里添加上你的自定义类型MessageItem试试,
方法2:在调用websevice的机器上的那个代理类里添加上你的自定义类型MessageItem试试,
#2
应该确保你的对象都能正常的序列化.
像ArrayList这种结构最好少用,本身效率就不高,因其能存放不同类型的数据,感觉用在WebService中不太合适.应该用List<>
像ArrayList这种结构最好少用,本身效率就不高,因其能存放不同类型的数据,感觉用在WebService中不太合适.应该用List<>
#3
请问下方法2是怎么实现的啊?是要添加什么配置文件么?
#4
打开代理类,那个代理类的cs文件
#5
关注
#1
方法1:把你的自定义类型MessageItem变成byte[]
方法2:在调用websevice的机器上的那个代理类里添加上你的自定义类型MessageItem试试,
方法2:在调用websevice的机器上的那个代理类里添加上你的自定义类型MessageItem试试,
#2
应该确保你的对象都能正常的序列化.
像ArrayList这种结构最好少用,本身效率就不高,因其能存放不同类型的数据,感觉用在WebService中不太合适.应该用List<>
像ArrayList这种结构最好少用,本身效率就不高,因其能存放不同类型的数据,感觉用在WebService中不太合适.应该用List<>
#3
请问下方法2是怎么实现的啊?是要添加什么配置文件么?
#4
打开代理类,那个代理类的cs文件
#5
关注