2009-12-02 22 views
9

Tengo el fragmento de código debajo de una plantilla de servicio WCF habilitado para Ajax. ¿Qué puedo hacer para que devuelva JSon en lugar de XML? gracias.¿Cómo devolver Json desde WCF Service?

using System; 
using System.Linq; 
using System.Runtime.Serialization; 
using System.ServiceModel; 
using System.ServiceModel.Activation; 

[ServiceContract(Namespace = "WCFServiceEight")] 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
public class CostService 
{ 
    // Add [WebGet] attribute to use HTTP GET 
    [OperationContract] 
    [WebGet] 
    public double CostOfSandwiches(int quantity) 
    { 
     return 1.25 * quantity; 
    } 
} 

Respuesta

7

Ha intentado:

[WebGet(ResponseFormat= WebMessageFormat.Json)] 
+0

gracias. Sí, lo intenté pero todavía recibo un error del código de JQuery. aquí está el código que estoy utilizando para llamar al servicio: parámetros var = 7 $ .ajax ({ tipo: "POST", url: "http: // localhost: 53153/TestWebServiceEightSite/CostService.svc", de datos: parámetros, CONTENTTYPE: "application/json; charset = UTF-8", tipoDatos: "json", éxito: la función (resultado) {. $ ("InputHTML") val (resultado); } , error: función (e) { alerta (e); } }); – Zinoo

+0

¿Ha mirado en: http://www.west-wind.com/weblog/posts/324917.aspx? – tomasr

1

Si desea utilizar el verbo POST como en $.ajax({ type: "POST", ...) necesitará para el marcado de su método con [WebInvoke(Method="POST"].

Ya que lo marcó con [WebGet] (lo que equivale a [WebInvoke(Method="GET")]) debe llamar al servicio utilizando el verbo GET, por ejemplo .:

$.ajax({ type: "GET", ...) o utilizar $.get(url, data, ...) (ver jQuery.get para obtener más información).

Y tendrá que configurar ResponseFormat en Json, como tomasr ya señalado.

Cuestiones relacionadas