2009-07-16 196 views
5

我有一個現有的Web服務返回XML響應,我想添加一些返回JSON的新方法。我是否必須創建一個以JSON格式返回的獨立Web服務,還是可以混合使用?從.NET 3.5 WCF Web服務(REST)返回JSON和XML格式

如果我使用ResponseFormat = WebMessageFormat.JSON,我需要用[DataContractFormat]註釋該服務,但我似乎無法獲得xml類型響應格式所需的[XmlSerializerFormat]。

回答

3

我不明白爲什麼這是不可能的。您使用[ServiceContract]屬性(而不是DataContractFormat)註釋該服務。它應該看起來像

[ServiceContract] 
    public interface IDoStuff 
    { 
     [OperationContract] 
     [WebInvoke(Method = "POST", 
      UriTemplate = "DoStuff", 
      ResponseFormat = WebMessageFormat.Json, 
      RequestFormat = WebMessageFormat.Json)] 
     TestObj DoWork(TestInputObj Inp); 
    } 

要使它xml,只需更改responseformat。當你執行你的post命令時,你會得到json,一個單獨的xml格式的方法會給你xml。

1

你知道一個事實,你需要XmlSerializerFormat嗎?只有當您需要序列化爲不符合Data Contract Serializer規則的XML時才需要這樣做。

如果你確實需要這個,那麼你確實需要第二個服務。雖然這很容易。只需將共同操作的內容提取到單獨的方法中,然後從兩個服務中調用這些方法。

0

我相信你是在xml類型的粘貼中使用XMLSerilization屬性。如果是這樣,它不會影響你的JSON數據。你可以使用它來同時使用XML & Json。 response.Content.ReadAsJsonDataContract()/ ReadAsXmlDataContract()其中T代表XMLSerilizable類型。