2011-03-01 45 views
1

我有一個.NET 3.5 WCF服務,它當前是一個SOAP + XML服務。 現在需要將這種相同的服務公開給需要JSON格式響應的客戶。WCF服務 - 用於SOAP + XML和JSON端點的不同數據合同

在仔細檢查其他關於它和他們的答案做題,我認爲這本身應該是可以通過具有2個不同的端點作爲解釋here

但是,我有一個稍微大一點的併發症。需要改變通過JSON服務公開的DataContracts,即不需要SOAP服務當前公開的所有屬性。 JSON對象只需要公開屬性的一個子集。

是否有任何方法讓DataContractJsonSerializer序列化程序省略某些使用DataContract屬性裝飾的字段?這個類是密封的,所以繼承它不是一個選項。我是否需要在這裏編寫自己的序列化程序,如果是的話,我將如何去指導WCF使用我的自定義序列化程序?

回答

3

一旦您在同一類型上使用DataContractSerializerDataContractJsonSerializer,它們將始終序列化相同的屬性,因爲這些類對序列化使用相同的規則。最簡單(和正確)的方法是簡單地爲第二個點(或整個新服務)定義新的服務合同,並用新的數據合同公開操作。