我有一個現有的Web服務返回XML響應,我想添加一些返回JSON的新方法。我是否必須創建一個以JSON格式返回的獨立Web服務,還是可以混合使用?從.NET 3.5 WCF Web服務(REST)返回JSON和XML格式
如果我使用ResponseFormat = WebMessageFormat.JSON,我需要用[DataContractFormat]註釋該服務,但我似乎無法獲得xml類型響應格式所需的[XmlSerializerFormat]。
我有一個現有的Web服務返回XML響應,我想添加一些返回JSON的新方法。我是否必須創建一個以JSON格式返回的獨立Web服務,還是可以混合使用?從.NET 3.5 WCF Web服務(REST)返回JSON和XML格式
如果我使用ResponseFormat = WebMessageFormat.JSON,我需要用[DataContractFormat]註釋該服務,但我似乎無法獲得xml類型響應格式所需的[XmlSerializerFormat]。
我不明白爲什麼這是不可能的。您使用[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。
你知道一個事實,你需要XmlSerializerFormat嗎?只有當您需要序列化爲不符合Data Contract Serializer規則的XML時才需要這樣做。
如果你確實需要這個,那麼你確實需要第二個服務。雖然這很容易。只需將共同操作的內容提取到單獨的方法中,然後從兩個服務中調用這些方法。
我相信你是在xml類型的粘貼中使用XMLSerilization屬性。如果是這樣,它不會影響你的JSON數據。你可以使用它來同時使用XML & Json。 response.Content.ReadAsJsonDataContract()/ ReadAsXmlDataContract()其中T代表XMLSerilizable類型。