Ritorno JSON avvolto in una funzione di callback da un servizio Web WCF REST
Domanda
Ho un servizio web JSON ritorno, ma ora mi piacerebbe modificarlo per consentire ai chiamanti di specificare una funzione di callback in modo che il ritorno va da: JSON DATA per specifiedFunction (JSON dati); Il modo in cui sto tornando JSON in questo momento è solo restituendo un'istanza di un oggetto e avendo .NET fare la sua magia serializzazione, se cambio di restituire solo una stringa che può aggiungere il nome della funzione e le parentesi intorno i dati, ma allora io alla fine con le virgolette nel ritorno, perché la sua una stringa e non voglio che quelli. Così come posso fare?
La ragione di questo è che vogliamo sviluppatori chiamando la nostra API per essere in grado di utilizzare il tag script dinamico come spiegato qui http://www.xml.com/pub/a/2005/12/21/json-dynamic-script-tag.html
Soluzione
La tecnica che si sta dopo è chiamato JSONP (JSON con imbottitura).
Come sostenere JSONP in WCF servizi :
Il
JsonPEncoder
è un encoder involucro sull'encoder WCF JSON. delegati It la maggior parte delle chiamate al codificatore avvolto. Il metodiWriteMesage
sono stati sovresposta per riempire il messaggio in uscita con il metodo di callback. IlJsonBehavior
viene utilizzato sul servizio operazione per abilitare JSONP codifica tale operazione. Il parametro di query di l'URI che contiene il callback nome della funzione è specificato come ProprietàCallBack
del comportamento.
Altri suggerimenti
In WCF 4.0 aggiunto il supporto per JSONP. È possibile utilizzare
<bindings>
<webHttpBinding>
<binding name="webHttpBindingWithJsonP" crossDomainScriptAccessEnabled="true" />
</webHttpBinding>
</bindings>
http: //bendewey.wordpress .com / 2009/11/24 / usando-jsonp-con-WCF-e-jquery /
Non so quale versione di HTML che stanno utilizzando, ma in tutte le versioni che ho utilizzato, l'attributo src in un tag script deve essere un URL. Stanno in qualche modo utilizzando una funzione invece, e io non vedere che di lavoro.
Avete effettivamente visto un'opera tag script dinamica?
Lo so che è un vecchio thread, ma sembra che tutti insiste sulla modifica della WCF per sostenere JSONP quando questo non è chiaramente ciò che il poster ha chiesto. E ho postato qui e forums.asp.net e nessuno ha preso il tempo di rispondere.
Ho finito per tornare come un ruscello. Questo fa sì che il modo "raw" da utilizzare e WCF non toccherà la risposta. Link: http: / /blogs.msdn.com/b/carlosfigueira/archive/2008/04/17/wcf-raw-programming-model-web.aspx .