Volver JSON envuelto en una función de devolución de llamada desde un servicio web WCF REST
Pregunta
Tengo un servicio web JSON regresar, pero ahora me gustaría modificarlo para permitir que las personas que llaman para especificar una función de devolución de llamada por lo que el rendimiento va de: JSON DATA para specifiedFunction JSON (DATA); La forma en que estoy volviendo JSON en este momento es simplemente devolviendo una instancia de un objeto y tener .NET hacer su magia serialización, si cambio al que acaban de volver de una cadena que se puede añadir el nombre de la función y los corchetes de los datos, pero luego termino con comillas en el regreso, porque es una cadena y no quiero eso. Entonces, ¿cómo puedo hacerlo?
La razón de esto es que queremos desarrolladores llamando nuestra API para poder utilizar la etiqueta script dinámico como se explica aquí http://www.xml.com/pub/a/2005/12/21/json-dynamic-script-tag.html
Solución
La técnica se le debe su nombre a JSONP (JSON con relleno).
Como apoyar JSONP en los servicios WCF :
El
JsonPEncoder
es un codificador de envolver en el codificador WCF JSON. delega la mayoría de las llamadas al codificador envueltos. los métodosWriteMesage
han sido anulado para rellenar el mensaje de salida con el método de devolución de llamada. losJsonBehavior
se utiliza en el servicio operación para habilitar JSONP codificación para esa operación. El parámetro de consulta de el URI que mantiene la devolución de llamada nombre de la función se especifica como elCallBack
propiedad de la conducta.
Otros consejos
En WCF 4.0 Añadido soporte para JSONP. Es posible utilizar
<bindings>
<webHttpBinding>
<binding name="webHttpBindingWithJsonP" crossDomainScriptAccessEnabled="true" />
</webHttpBinding>
</bindings>
http: //bendewey.wordpress .com / 2009/24/11 / usando-jsonp-con-WCF-y-jquery /
No sé qué versión de HTML que está utilizando, pero en todas las versiones que he utilizado, el atributo src de una etiqueta de script tiene que ser una dirección URL. De algún modo ellos están usando una función de su lugar, y no veo que el trabajo.
¿Ha visto realmente una obra etiquetas de script dinámicas?
Sé que es un hilo viejo, pero parece que todo el mundo insiste en cambiar el WCF para apoyar JSONP cuando eso no es claramente lo que pidió el cartel. Y he publicado aquí y forums.asp.net y nadie se tomó el tiempo para responder.
Terminé devolverlo como una corriente. Esto hace que el modo de "prima" para ser utilizado y WCF no tocará la respuesta. Enlace: http: / /blogs.msdn.com/b/carlosfigueira/archive/2008/04/17/wcf-raw-programming-model-web.aspx .