Лучший способ поддерживать данные «application / x-www-form-urlencoded» с WCF?

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

XElement Query_Post(Stream postData); 

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

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

Я бы хотел, чтобы мой контракт был:

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

2 Solutions collect form web for “Лучший способ поддерживать данные «application / x-www-form-urlencoded» с WCF?”

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

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

Библиотека WCF REST Contrib позволяет использовать эту функцию:

https://github.com/mikeobrien/WcfRestContrib

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

  • JAX-WS = Когда Apache CXF установлен, он «крадет» стандартную реализацию JDK JAX-WS по умолчанию, как ее решить?
  • Что такое файл .episode ..?
  • В модели веб-программирования WCF можно написать рабочий контракт с массивом параметров строки запроса (то есть с тем же именем)?
  • Вызов метода на стороне сервера ASP.NET через jQuery
  • asp.net asmx веб-сервис возвращает xml вместо json
  • Исключение JAXB: class, не известный этому контексту
  • Ошибка в клиенте WCF, использующем веб-службу Axis 2 с WS-Security. Имя пользователя: Token PasswordDigest.
  • Каковы различия между веб-службами WCF и ASMX?
  • Каковы накладные расходы на создание нового HttpClient на один вызов в клиенте WebAPI?
  • Как получить доступ к параметрам в методе POST RESTful
  • JAX-WS - Карта Исключения к ошибкам
  • Interesting Posts

    Понимание того, что требуется для удаления хеша # из угловых маршрутов

    В Chrome «Очистить данные просмотра» не удаляются файлы cookie для открытых вкладок инкогнито?

    Можете ли вы прорваться от Groovy «каждого» закрытия?

    является f (void), устаревшим в современных C и C ++

    Как получить существующую установку Vista в «чистом» состоянии (без установочного диска)?

    Указание ширины панели ggplot2

    Используя ключевое слово «this» в java

    Почему я должен использовать exFAT через NTFS на съемных носителях?

    Поместите звезды на ggplot barplots и boxplots – чтобы указать уровень значимости (p-value)

    Чтобы узнать, какая видеокарта установлена ​​в моей системе?

    Нажмите клавишу (Ctrl + A) Selenium WebDriver

    Android: как сделать кликабельное изображение карты с каждой страной, производя другое действие?

    Предотвращение кражи фокуса приложений

    Как проверить загрузку файла с помощью Watin / IE9?

    Как переместить загрузочные файлы Windows 7 (bootmgr, …) на другой диск?

    Давайте будем гением компьютера.