Teilen über


WebContentTypeMapper-Beispiel

Das WebContentTypeMapper-Beispiel veranschaulicht, wie neue Inhaltstypen den Nachrichtentextformaten von Windows Communication Foundation (WCF) zugeordnet werden.

Das WebHttpEndpoint Element integriert den Webnachrichten-Encoder, mit dem WCF JSON-, XML- oder Rohdaten in Binärform am selben Endpunkt empfangen kann. Der Encoder bestimmt das Textkörperformat der Nachricht, indem er den HTTP-Inhaltstyp der Anforderung betrachtet. In diesem Beispiel wird die WebContentTypeMapper Klasse vorgestellt, mit der der Benutzer die Zuordnung zwischen Inhaltstyp und Textformat steuern kann.

WCF stellt eine Reihe von Standardzuordnungen für Inhaltstypen bereit. Zum Beispiel entspricht application/json JSON und text/xml XML. Jeder Inhaltstyp, der nicht JSON oder XML zugeordnet ist, wird dem unformatierten Binärformat zugeordnet.

In einigen Szenarien (z. B. Pushstil-APIs) steuert der Dienstentwickler nicht den vom Client zurückgegebenen Inhaltstyp. Zum Beispiel könnten Clients JSON als text/javascript anstelle von application/json zurückgeben. In diesem Fall muss der Dienstentwickler einen Typ bereitstellen, der von WebContentTypeMapper abgeleitet ist, um den angegebenen Inhaltstyp ordnungsgemäß zu behandeln, wie im folgenden Beispielcode gezeigt.

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

Der Typ muss die GetMessageFormatForContentType(String) Methode überschreiben. Die Methode muss das contentType Argument auswerten und einen der folgenden Werte zurückgeben: Json, , Xml, , Rawoder Default. Das Zurückgeben von Default wird für die Standardzuordnungen für den Webnachrichtenencoder zurückgestellt. Im vorherigen Beispielcode wird der text/javascript Inhaltstyp JSON zugeordnet, und alle anderen Zuordnungen bleiben unverändert.

Um die JsonContentTypeMapper Klasse zu nutzen, verwenden Sie Folgendes in Ihrem 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>

Um die Anforderung für die Verwendung von JsonContentTypeMapper zu überprüfen, entfernen Sie das contentTypeMapper-Attribut aus der obigen Konfigurationsdatei. Die Clientseite kann nicht geladen werden, wenn versucht wird, JSON-Inhalte mit text/javascript zu senden.

So können Sie das Beispiel einrichten, erstellen und ausführen

  1. Stellen Sie sicher, dass Sie das One-Time Setup-Verfahren für die Windows Communication Foundation-Beispieleausgeführt haben.

  2. Erstellen Sie die Lösung WebContentTypeMapperSample.sln wie im Erstellen der Windows Communication Foundation-Beispiele beschrieben.

  3. Navigieren Sie zu http://localhost/ServiceModelSamples/JCTMClientPage.htm (öffnen Sie nicht JCTMClientPage.htm im Browser aus dem Projektverzeichnis).