Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
WCF admite la serialización de datos en formato JSON. En este tema se describe cómo indicar a WCF que serialice los tipos mediante .DataContractJsonSerializer
Programación de mensajes con tipo
DataContractJsonSerializer se usa cuando se aplica o WebGetAttributeWebInvokeAttribute a una operación de servicio. Ambos atributos permiten especificar y RequestFormat
ResponseFormat
. Para usar JSON para solicitudes y respuestas. establezca ambos WebMessageFormat.Json
en . Para usar JSON, debe usar , WebHttpBindingque configura automáticamente .WebHttpBehavior Para obtener más información sobre la serialización de WCF, vea Serialización y deserialización. Para obtener más información sobre JSON y WCF, vea Service Station - An Introduction To RESTful Services With WCF (Introducción a los servicios RESTful con WCF).
Importante
El uso de JSON requiere el uso de WebHttpBinding y WebHttpBehavior que no admiten la comunicación SOAP. Los servicios que se comunican con WebHttpBinding no admiten la exposición de metadatos del servicio, por lo que no podrá usar la funcionalidad Agregar referencia de servicio de Visual Studio ni la herramienta de línea de comandos svcutil para generar un proxy del lado cliente. Para obtener más información sobre cómo puede llamar mediante programación a los servicios que usan WebHttpBinding, vea Cómo consumir servicios REST con WCF.
Programación de mensajes sin tipo
Al trabajar directamente con objetos Message sin tipo, debe establecer explícitamente las propiedades en el mensaje sin tipo para serializarlo como JSON. El siguiente fragmento de código muestra cómo hacerlo.
Message response = Message.CreateMessage(
MessageVersion.None, // No SOAP message version
"*", // SOAP action, ignored since this is JSON
"Response string: JSON format specified", // Message body
new DataContractJsonSerializer(typeof(string))); // Specify DataContractJsonSerializer
response.Properties.Add( WebBodyFormatMessageProperty.Name,
new WebBodyFormatMessageProperty(WebContentFormat.Json)); // Use JSON format