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

StackOverflow https://stackoverflow.com/questions/604463

Вопрос

Я создаю службу 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);
Это было полезно?

Решение

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

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

Другие советы

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

https://github.com/mikeobrien/WcfRestContrib

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top