我有一个.NET 3.5 WCF服务,它目前是一个SOAP + XML服务。 现在需要将这个相同的服务公开给需要JSON格式响应的一些客户端。
在讨论关于它及其答案的其他SO问题时,我相信这本身应该可以通过解释here
的2个不同的端点来实现。然而,我有一个稍大的并发症。需要更改要通过JSON服务公开的DataContracts,即不需要SOAP服务当前公开的所有属性。 JSON对象只需要公开属性的子集。
有没有办法让DataContractJsonSerializer序列化程序省略用DataContract属性修饰的某些字段?这个类是密封的,所以继承它不是一个选项。我是否需要在此处编写自己的序列化程序,如果是,我将如何指示WCF使用我的自定义序列化程序?
答案 0 :(得分:3)
在同一类型上使用DataContractSerializer
和DataContractJsonSerializer
后,它们将始终序列化相同的属性,因为这些类使用相同的序列化规则。最简单(也是正确)的方法是为第二个enpoint(或全新服务)定义新的服务合同,并使用新的数据合同公开操作。