2009-03-02 6 views
8

Estoy construyendo un servicio WCF basado en una especificación W3C que define un punto final de servicio web RESTful que acepta datos de publicación "application/x-www-form-urlencoded". WCF no admite este tipo de codificación de mensajes por defecto y he encontrado una serie de diferentes ejemplos de la creación de un contrato que tiene este aspecto:¿La mejor manera de admitir datos de publicación "application/x-www-form-urlencoded" con WCF?

XElement Query_Post(Stream postData); 

Y entonces dentro de la aplicación decodificar el flujo de postData utilizando el método HttpUtility.ParseQueryString .

¿Alguien sabe de una manera más fuertemente tipada de soportar "application/x-www-form-urlencoded" en WCF?

Me gustaría que mi contrato de operación sea:

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

El hecho de que 24 horas después nadie sabe cómo hacer lo que debería ser una idea tan básica debería indicar que WCF no es la mejor plataforma para construir cosas tranquilas. Pruebe OpenRasta, creo que tiene un códec incorporado para manejar los datos de x-www-form-urlencoded. –

Respuesta

7

La mejor manera es utilizar Stream como Raw HTTP POST with WCF o lo que está diciendo. La razón es porque WCF abstrae todos los elementos de diseño físico del nivel de comunicación del código de servicio. Idealmente, querría hacer un servicio que podría convertirse en SOAP o REST simplemente presionando el botón.

Para admitirlo de forma nativa, es probable que tenga que extender WebHttpBinding o hacer su propia encuadernación e implementar custom encoder. Esto es simétrico al resultado, como dice la publicación vinculada. Tienes que girar sus brazos para que WCF genere material que no sea XML/JSON.

+0

¿Tiene un ejemplo con un enlace no muerto? –

2

biblioteca La WCF REST Contrib permite esta funcionalidad:

https://github.com/mikeobrien/WcfRestContrib

Incluye un formateador formateador codificado POX y la forma URL y le permite crear fácilmente su propio. Los formateadores se asignan a tipos mime y se seleccionan automáticamente para serializar/deserializar el cuerpo de la entidad en función del tipo de contenido y aceptar encabezados.

+0

Downvoted porque URL está roto ... – ewitkows

+0

Esa respuesta es 6 años de edad jefe. – hcoverlambda

+0

Y ya no proporciona ninguna ayuda jefe – ewitkows

Cuestiones relacionadas