Лучший способ поддержать "application / x-www-form-urlencoded" данные публикации с WCF? - PullRequest
8 голосов
/ 03 марта 2009

Я создаю службу WCF на основе спецификации W3C, которая определяет конечную точку веб-службы RESTful, которая принимает почтовые данные application / x-www-form-urlencoded. WCF не поддерживает этот тип кодировки сообщений по умолчанию, и я нашел несколько различных примеров создания контракта, который выглядит следующим образом:

XElement Query_Post(Stream postData);

И затем в рамках реализации декодирование потока postData с использованием метода HttpUtility.ParseQueryString.

Кто-нибудь знает о более типизированном способе поддержки "application / x-www-form-urlencoded" в WCF?

Я бы хотел, чтобы мой контракт на эксплуатацию был:

XElement Query_Post(string query, string [] params);

Ответы [ 2 ]

7 голосов
/ 04 марта 2009

Лучший способ - использовать Stream как Raw HTTP POST с WCF или что вы говорите. Причина в том, что WCF абстрагирует весь материал физического макета уровня связи от кода сервиса. В идеале вы хотели бы создать сервис, который мог бы превратиться в SOAP или REST, просто щелкнув выключателем.

Для его поддержки вам, вероятно, придется расширить WebHttpBinding или создать собственную привязку и реализовать пользовательский кодировщик . Это симметрично выводу, как сказано в сообщении. Вы должны повернуть руки, чтобы WCF мог выводить не-XML / JSON.

2 голосов
/ 20 июня 2009

Библиотека WCF REST Contrib включает эту функцию:

https://github.com/mikeobrien/WcfRestContrib

Он включает в себя форматировщик POX и форматированный кодировщик URL-адреса и позволяет легко создавать свои собственные. Форматеры отображаются на типы MIME и автоматически выбираются для сериализации / десериализации тела объекта на основе типа контента и принятия заголовков.

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