将自定义类型发送到 WCF 服务

本文关键字:WCF 服务 自定义 类型 | 更新日期: 2023-09-27 18:30:59

>我需要将未知类型从我的客户端传递到 WCF 服务,

服务不知道该类型。

例如,我有一个类 Customer 我创建了一个序列化实例并发送到服务,当我需要反序列化时出现问题,我必须提供类型才能将 desrialized 对象转换为。

类型无法序列化,尝试时出现以下错误:

{"Type 'System.RuntimeType' with data contract name 
 'RuntimeType:http://schemas.datacontract.org/2004/07/System' is not expected. Consider 
  using a DataContractResolver or add any types not known statically to the list of 
  known types - for example, by using the KnownTypeAttribute attribute or by adding 
  them to the list of known types passed to DataContractSerializer."}

我需要找到解决这个问题的方法,有什么想法吗?

总结一下:

我正在寻找将未知类型发送到 WCF 服务的解决方法。

将自定义类型发送到 WCF 服务

如果另一端对此一无所知(注释),那么您不可能反序列化。即使使用基于类型的序列化程序(BinaryFormatter/NetDataContractSerializer),也无法做到这一点。

如果你发送的是完全外来的数据,那么你基本上仅限于XML或JSON之类的东西,即使这样,意思也有些模糊(<id>123<id>是一个字符串吗?int?float?long?)。

WCF 不太适合您的方案(也不适合大多数其他基于协定的堆栈;大多数系统都希望能够理解传入的数据)。