Beispiel zu WebContentTypeMapper

In diesem Beispiel wird veranschaulicht, wie Windows Communication Foundation (WCF)-Nachrichtentextformaten neue Inhaltstypen zugeordnet werden.

Das WebHttpEndpoint-Element bindet den Webnachrichtenencoder ein, sodass WCF JSON-, XML- oder unformatierte binäre Nachrichten am gleichen Endpunkt empfangen kann.Der Encoder bestimmt das Textformat der Nachricht, indem der HTTP-Inhaltstyp der Anforderung betrachtet wird.In diesem Beispiel wird die WebContentTypeMapper-Klasse eingeführt, mit der der Benutzer die Zuordnung zwischen Inhaltstyp und Textformat steuern kann.

WCF stellt einen Satz von Standardzuordnungen für Inhaltstypen bereit.application/json wird beispielsweise JSON und text/xml wird XML zugeordnet.Inhaltstypen, die nicht JSON oder XML zugeordnet sind, werden dem unformatierten binären Format zugeordnet.

In einigen Szenarios (beispielsweise Push-APIs) steuert der Dienstentwickler den vom Client zurückgegebenen Inhaltstyp nicht.Beispielsweise können Clients möglicherweise JSON als text/javascript anstelle von application/json zurückgeben.In diesem Fall muss der Dienstentwickler einen von WebContentTypeMapper abgeleiteten Typ bereitstellen, um den jeweiligen Inhaltstyp richtig zu behandeln, wie im folgenden Beispielcode dargestellt.

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: WebContentFormat, WebContentFormat, WebContentFormat oder WebContentFormat.Das Zurückgeben von WebContentFormat wird für die Standardzuordnungen für den Webnachrichtenencoder zurückgestellt.Im vorhergehenden Beispielcode wird der text/javascript-Inhaltstyp JSON zugeordnet, und alle anderen Zuordnungen bleiben unverändert.

Gehen Sie bezüglich der WEB.CONFIG-Datei folgendermaaßen vor, um die JsonContentTypeMapper-Klasse zu verwenden:

<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>  

Entfernen Sie das contentTypeMapper-Attribut aus der oben erwähnten Konfigurationsdatei, um die Anforderungen zum Verwenden des JsonContentTypeMapper zu überprüfen.Die Clientseite kann nicht geladen werden, wenn versucht wird, text/javascript zum Senden von JSON-Inhalt zu verwenden.

So richten Sie das Beispiel ein, erstellen es und führen es aus

  1. Stellen Sie sicher, dass Sie Einmaliges Setupverfahren für Windows Communication Foundation-Beispiele ausgeführt haben.

  2. Erstellen Sie die Projektmappe WebContentTypeMapperSample.sln, wie in Erstellen der Windows Communication Foundation-Beispiele beschrieben.

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

Wichtig

Die Beispiele sind möglicherweise bereits auf dem Computer installiert.Überprüfen Sie das folgende (standardmäßige) Verzeichnis, bevor Sie fortfahren.

<Installationslaufwerk>:\WF_WCF_Samples

Wenn dieses Verzeichnis nicht vorhanden ist, rufen Sie Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 auf, um alle Windows Communication Foundation (WCF)- und WF-Beispiele herunterzuladen.Dieses Beispiel befindet sich im folgenden Verzeichnis.

<InstallDrive>:\WF_WCF_Samples\WCF\Extensibility\Ajax\WebContentTypeMapper

Siehe auch