Возврат JSON И формата XML от.NET 3.5 веб-сервиса WCF (REST)

Я придумал следующую команду (для Git 2.13 и позже):

git branch -r --sort=creatordate \
    --format "%(creatordate:relative);%(committername);%(refname:lstrip=-1)" \
    | grep -v ";HEAD$" \
    | column -s ";" -t

Если у вас нет column, вы можете заменить последнюю строку на

    | sed -e "s/;/\t/g"

Вывод выглядит как

6 years ago             Tom Preston-Werner  book
4 years, 4 months ago   Parker Moore        0.12.1-release
4 years ago             Matt Rogers         1.0-branch
3 years, 11 months ago  Matt Rogers         1.2_branch
3 years, 1 month ago    Parker Moore        v1-stable
12 months ago           Ben Balter          pages-as-documents
10 months ago           Jordon Bedwell      make-jekyll-parallel
6 months ago            Pat Hawks           to_integer
5 months ago            Parker Moore        3.4-stable-backport-5920
4 months ago            Parker Moore        yajl-ruby-2-4-patch
4 weeks ago             Parker Moore        3.4-stable
3 weeks ago             Parker Moore        rouge-1-and-2
19 hours ago            jekyllbot           master

Я написал пост в блоге о том, как работают различные части.

5
задан Michael Behan 16 July 2009 в 21:36
поделиться

2 ответа

Я не понимаю, почему это невозможно. Вы аннотируете службу с помощью атрибута [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.

3
ответ дан 15 December 2019 в 01:08
поделиться

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

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

1
ответ дан 15 December 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: