Применение [WebInvoke (ResponseFormat = WebMessageFormat.Json)] в файле конфигурации

Я пишу то, что я называю веб-службой WCF POJ (Plain Old JSON) - тот, который принимает и испускает стандартный JSON без всякой ерунды, которую ASP.NET Ajax любит добавлять в нее.

Похоже, что для этого есть три шага:

Измените «enableWebScript» на «webHttp» в теге конечной точкиУкрасить метод с помощью [WebInvoke (ResponseFormat = WebMessageFormat.Json)]Добавьте заклинание [AspNetCompatibilityRequirements (RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] в контракт на обслуживание

Это все работает хорошо для меня - я могу передать, и мне возвращают хороший простой JSON.

Если я удаляю атрибут WebInvoke, то вместо этого я получаю XML, поэтому он, безусловно, делает то, что должен делать. Но мне кажется странным, что опция указания вывода JSON появляется здесь, а не в файле конфигурации. Скажем, я тоже хотел представить свой метод как конечную точку XML - как бы я это сделал? В настоящее время единственный способ, которым я могу видеть, - это иметь второй метод, который делает то же самое, но не указывает WebMethodFormat.Json. Затем промыть и повторить для каждого метода в моем сервисе? Тьфу.

Указание на то, что выходные данные должны быть сериализованы в JSON в атрибуте, кажется, полностью противоречит философии WCF, где служба реализована без учета транспорта и кодирования, оставляя неприятные детали того, как данные будут перемещаться в конфигурационный файл.

Есть ли лучший способ сделать то, что я хочу сделать? Или мы застряли с этим неловким атрибутом? Или я недостаточно глубоко понимаю WCF?

Ответы на вопрос(0)

Ваш ответ на вопрос