在项目中添加web service 程序可以正常运行,
但是改为服务引用就不能正常运行了。 是调用返回自定义类型的时候出错
http://tempuri.org/ 进行反序列化时出错: GetCommunityResponse。InnerException 消息是“在行 1、位置 325 出现错误。 元素“http://tempuri.org/:anyType”含有“http://tempuri.org/:CommunityEntity”数据协定的数据。反序列化程序不知道映射到此协定的类型。请将与“CommunityEntity”对应的类型添加到已知类型的列表中,例如,通过使用 KnownTypeAttribute 属性或通过将其添加到传递给 DataContractSerializer 的已知类型的列表等方法。”。有关详细信息,请参阅 InnerException。
这2则有什么区别,如果要实现引用也能正常调用,服务端 和客户端需要做哪些修改吗?
因为 WEBService 和WCF 服务默认的序列化方式不同。WCF 会采用默认的DataContractSerializer 来序列化实体,将 CommunityEntity 这个 实体标记为【Serializable】就能告诉WCF 采用什么样的序列化方式去序列化实体;,并且如果这个实体里面还引用了别的实体, 那也要标记为可序列化。
应该是一样的吧,我VS里只有“添加WEB引用”?怎么解释。
web引用是用以兼容早期 asp.net 编写的 web service.