WebContentTypeMapper, exemple

Cet exemple illustre comment mapper les nouveaux types de contenu aux formats du corps des messages Windows Communication Foundation (WCF).

Bb943479.note(fr-fr,VS.90).gifRemarque :
Cet exemple requiert l'installation de .NET Framework version 3.5 pour être généré et exécuté. Visual Studio 2008 est nécessaire pour l'ouverture des fichiers projet et solution.

L'élément <webHttpBinding> se connecte au codeur de message Web, permettant ainsi à WCF de recevoir des messages JSON, des messages XML ou des messages binaires bruts au niveau du même point de terminaison. Le codeur détermine le format du corps des messages en examinant le type de contenu HTTP des demandes. Cet exemple introduit la classe WebContentTypeMapper, laquelle permet à l'utilisateur de contrôler le mappage entre le type de contenu et le format du corps des messages.

Bb943479.note(fr-fr,VS.90).gifRemarque :
La procédure d'installation ainsi que les instructions de génération relatives à cet exemple figurent en fin de rubrique.

WCF fournit un ensemble de mappages par défaut destinés aux types de contenu. Par exemple, les mappages application/json et text/xml permettent de mapper les messages aux formats JSON et XML respectivement. Les types de contenu qui ne sont pas mappés aux formats JSON ou XML sont mappés au format binaire brut.

Dans certaines situations (par exemple, avec des API de type push), les développeurs de service ne contrôlent pas le type de contenu retourné par le client. Par exemple, les clients peuvent retourner le format JSON comme text/javascript au lieu de retourner application/json. Dans ce cas de figure, le développeur de service doit fournir un type qui dérive de WebContentTypeMapper pour pouvoir gérer correctement ce type de contenu, tel qu'illustré dans l'exemple de code suivant.

public class JsonContentTypeMapper : WebContentTypeMapper
{
    public override WebContentFormat
               GetMessageFormatForContentType(string contentType)
    {
        if (contentType == "text/javascript")
        {
            return WebContentFormat.Json;
        }
        else
        {
            return WebContentFormat.Default;
        }
    }
}

Ce type doit se substituer à la méthode GetMessageFormatForContentType. La méthode doit évaluer l'argument contentType et retourner l'une des valeurs suivantes : Json, Xml, Raw ou Default. Lorsque cette méthode retourne la valeur Default, les mappages de codeur de message Web par défaut sont utilisés. Dans l'exemple de code précédent, le type de contenu text/javascript est mappé au format JSON. Tous les autres mappages restent, en revanche, inchangés.

Pour utiliser la classe JsonContentTypeMapper, le point de terminaison doit utiliser une liaison personnalisée.

<customBinding>
    <binding name="JsonMapper">
        <webMessageEncoding webContentTypeMapperType=
"Microsoft.Ajax.Samples.JsonContentTypeMapper, JsonContentTypeMapper, Version=3.5.0.0, Culture=neutral, PublicKeyToken=null" />
        <httpTransport manualAddressing="true" />
    </binding>
</customBinding>

Pour vérifier les conditions requises à l'utilisation de JsonContentTypeMapper, remplacez le <webMessageEncoding webContentTypeMapperType= précédent par <webMessageEncoding />, et ce uniquement dans le fichier de configuration. La page du client ne parvient pas à se charger lorsqu'elle essaie d'utiliser text/javascript pour envoyer le contenu JSON.

Pour configurer, générer et exécuter l'exemple

  1. Assurez-vous d'avoir effectué la procédure figurant à la section Procédure d'installation unique pour les exemples Windows Communication Foundation.

  2. Générez la solution WebContentTypeMapperSample.sln tel qu'indiqué à la section Génération des exemples Windows Communication Foundation.

  3. Naviguez jusqu'à https://localhost/ServiceModelSamples/JCTMClientPage.htm (n'ouvrez pas JCTMClientPage.htm à l'aide d'un navigateur à partir du répertoire de projet).

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.