Возвращение формата JSON AND XML из веб-службы WCF .NET 3.5 (REST) - PullRequest
5 голосов
/ 17 июля 2009

У меня есть существующий веб-сервис, который возвращает XML-ответы, и я хотел бы добавить несколько новых методов, которые возвращают JSON. Нужно ли создавать отдельный веб-сервис, который возвращается в формате JSON, или мне нужен микс?

Если я использую ResponseFormat = WebMessageFormat.JSON, мне нужно аннотировать службу с помощью [DataContractFormat], но у меня, похоже, нет этого и [XmlSerializerFormat], который требуется для формата ответа типа xml.

Ответы [ 3 ]

3 голосов
/ 17 июля 2009

Я не понимаю, почему это невозможно. Вы аннотируете сервис с помощью атрибута [ServiceContract] (не DataContractFormat). Это должно выглядеть как

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

Чтобы сделать его XML, просто измените формат ответа. Когда вы выполните команду post, вы получите json, отдельный метод в формате xml даст вам xml.

1 голос
/ 17 июля 2009

Знаете ли вы, что вам нужен XmlSerializerFormat? Это необходимо, только если вам нужно сериализовать в XML, который не соответствует правилам сериализатора контрактов данных.

Если вам это нужно, вам нужна вторая услуга. Это довольно легко, хотя. Просто извлеките общие элементы операций в отдельные методы, а затем вызовите эти методы из обеих служб.

0 голосов
/ 23 июля 2010

Я полагаю, вы ссылаетесь на атрибут XmlSerializer в типе "Вставить как XML". Если это так, это не повлияет на ваши данные JSON. Вы можете использовать это для сериализации XML и JSON. response.Content.ReadAsJsonDataContract<T>() / ReadAsXmlDataContract<T>() где T для типа XMLSerializable.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...