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.
Este ejemplo muestra cómo asignar los nuevos tipos de contenido a los formatos de cuerpo del mensaje Windows Communication Foundation (WCF).
El elemento WebHttpEndpoint complementa el codificador del mensaje web, que permite a WCF recibir mensajes binarios sin formato, JSON o XML en el mismo extremo. El codificador determina el formato del cuerpo del mensaje examinando el tipo de contenido del Http de la solicitud. Este ejemplo incluye la clase WebContentTypeMapper, que permite al usuario controlar la asignación entre el tipo de contenido y el formato del cuerpo.
WCF proporciona un conjunto de asignaciones predeterminadas para los tipos de contenido. Por ejemplo, application/json se asigna a JSON y text/xml se asigna a XML. Cualquier tipo de contenido que no está asignado a JSON o a XML, está asignado al formato binario sin formato.
En algunos escenarios (por ejemplo, estilo de inserción API), el programador del servicio no controla el tipo de contenido devuelto por el cliente. Por ejemplo, los clientes podrían devolver JSON como text/javascript en lugar de application/json. En este caso, el programador del servicio debe proporcionar un tipo que deriva de WebContentTypeMapper para administrar correctamente el tipo de contenido determinado, como se muestra en el código de muestra siguiente.
public class JsonContentTypeMapper : WebContentTypeMapper
{
public override WebContentFormat
GetMessageFormatForContentType(string contentType)
{
if (contentType == "text/javascript")
{
return WebContentFormat.Json;
}
else
{
return WebContentFormat.Default;
}
}
}
El tipo debe reemplazar el método GetMessageFormatForContentType. El método debe evaluar el argumento contentType y devolver uno de los valores siguientes: Json, Xml, Rawo Default. El devolver el Default difiere las asignaciones de codificador del mensaje de web predeterminadas. En el código de ejemplo anterior, el tipo de contenido text/javascript está asignado a JSON y todas las demás asignaciones siguen estando sin modificar.
Para utilizar la clase JsonContentTypeMapper
, utilice lo siguiente en el archivo Web.config:
<system.serviceModel>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" contentTypeMapper="Microsoft.Samples.WebContentTypeMapper.JsonContentTypeMapper, JsonContentTypeMapper, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</webHttpEndpoint>
</standardEndpoints>
</system.serviceModel>
Para comprobar el requisito para utilizar JsonContentTypeMapper, quite el atributo contentTypeMapper del archivo de configuración anterior. La página del cliente no se carga al intentar utilizar text/javascript para enviar el contenido JSON.
Para configurar, compilar y ejecutar el ejemplo
Asegúrese de realizar los Procedimiento de instalación única para los ejemplos de Windows Communication Foundation.
Compile la solución WebContentTypeMapperSample.sln tal y como se describe en Compilación de los ejemplos de Windows Communication Foundation.
Navegue a https://localhost/ServiceModelSamples/JCTMClientPage.htm (no abra JCTMClientPage.htm en el explorador desde dentro del directorio del proyecto).
![]() |
---|
Puede que los ejemplos ya estén instalados en su equipo. Compruebe el siguiente directorio (valor predeterminado) antes de continuar.
<InstallDrive>:\WF_WCF_Samples
Si no existe este directorio, vaya a la página de ejemplos de Windows Communication Foundation (WCF) y Windows Workflow Foundation (WF) Samples para .NET Framework 4 para descargar todos los ejemplos de WF y Windows Communication Foundation (WCF). Este ejemplo se encuentra en el siguiente directorio.
<InstallDrive>:\WF_WCF_Samples\WCF\Extensibility\Ajax\WebContentTypeMapper
|