Beispiel zu WebContentTypeMapperWebContentTypeMapper Sample

In diesem Beispiel wird veranschaulicht, wie Windows Communication Foundation (WCF) Text Nachrichtenformate neue Inhaltstypen zugeordnet wird.This sample demonstrates how to map new content types to Windows Communication Foundation (WCF) message body formats.

Die WebHttpEndpoint -Element bindet den webnachrichtenencoder, dem WCF JSON-, XML- oder unformatierte binäre Nachrichten am selben Endpunkt empfangen kann.The WebHttpEndpoint element plugs in the Web message encoder, which allows WCF to receive JSON, XML, or raw binary messages at the same endpoint. Der Encoder bestimmt das Textformat der Nachricht, indem der HTTP-Inhaltstyp der Anforderung betrachtet wird.The encoder determines the body format of the message by looking at the HTTP content-type of the request. In diesem Beispiel wird die WebContentTypeMapper-Klasse eingeführt, mit der der Benutzer die Zuordnung zwischen Inhaltstyp und Textformat steuern kann.This sample introduces the WebContentTypeMapper class, which allows the user to control the mapping between content type and body format.

WCF bietet einen Satz von standardzuordnungen für Inhaltstypen an.WCF provides a set of default mappings for content types. application/json wird beispielsweise JSON und text/xml wird XML zugeordnet.For example, application/json maps to JSON and text/xml maps to XML. Inhaltstypen, die nicht JSON oder XML zugeordnet sind, werden dem unformatierten binären Format zugeordnet.Any content type that is not mapped to JSON or XML is mapped to raw binary format.

In einigen Szenarios (beispielsweise Push-APIs) steuert der Dienstentwickler den vom Client zurückgegebenen Inhaltstyp nicht.In some scenarios (for example, push-style APIs), the service developer does not control the content type returned by the client. Beispielsweise können Clients möglicherweise JSON als text/javascript anstelle von application/json zurückgeben.For example, clients might return JSON as text/javascript instead of application/json. In diesem Fall muss der Dienstentwickler einen von WebContentTypeMapper abgeleiteten Typ bereitstellen, um den jeweiligen Inhaltstyp richtig zu behandeln, wie im folgenden Beispielcode dargestellt.In this case, the service developer must provide a type that derives from WebContentTypeMapper to handle the given content type correctly, as shown in the following sample code.

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.The type must override the GetMessageFormatForContentType(String) method. Die Methode muss das contentType-Argument auswerten und einen der folgenden Werte zurückgeben: Json, Xml, Raw oder Default.The method must evaluate the contentType argument and return one of the following values: Json, Xml, Raw, or Default. Das Zurückgeben von Default wird für die Standardzuordnungen für den Webnachrichtenencoder zurückgestellt.Returning Default defers to the default Web message encoder mappings. Im vorhergehenden Beispielcode wird der text/javascript-Inhaltstyp JSON zugeordnet, und alle anderen Zuordnungen bleiben unverändert.In the previous sample code, the text/javascript content type is mapped to JSON, and all other mappings remain unchanged.

Gehen Sie bezüglich der WEB.CONFIG-Datei folgendermaaßen vor, um die JsonContentTypeMapper-Klasse zu verwenden:To use the JsonContentTypeMapper class, use the following in your 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>  

Entfernen Sie das contentTypeMapper-Attribut aus der oben erwähnten Konfigurationsdatei, um die Anforderungen zum Verwenden des JsonContentTypeMapper zu überprüfen.To verify the requirement for using the JsonContentTypeMapper, remove the contentTypeMapper attribute from the above configuration file. Die Clientseite kann nicht geladen werden, wenn versucht wird, text/javascript zum Senden von JSON-Inhalt zu verwenden.The client page fails to load when attempting to use text/javascript to send JSON content.

So können Sie das Beispiel einrichten, erstellen und ausführenTo set up, build, and run the sample

  1. Stellen Sie sicher, dass Sie ausgeführt haben die Setupprozedur für die Windows Communication Foundation-Beispiele zum einmaligen.Ensure that you have performed the One-Time Setup Procedure for the Windows Communication Foundation Samples.

  2. Erstellen Sie die Projektmappe WebContentTypeMapperSample.sln, wie in beschrieben Erstellen der Windows Communication Foundation-Beispiele.Build the solution WebContentTypeMapperSample.sln as described in Building the Windows Communication Foundation Samples.

  3. Navigieren Sie zu http://localhost/ServiceModelSamples/JCTMClientPage.htm (Öffnen Sie JCTMClientPage.htm nicht im Browser aus dem Projektverzeichnis).Navigate to http://localhost/ServiceModelSamples/JCTMClientPage.htm (do not open JCTMClientPage.htm in the browser from within the project directory).

Wichtig

Die Beispiele sind möglicherweise bereits auf dem Computer installiert.The samples may already be installed on your machine. Suchen Sie nach dem folgenden Verzeichnis (Standardverzeichnis), bevor Sie fortfahren.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Wenn dieses Verzeichnis nicht vorhanden ist, fahren Sie mit Windows Communication Foundation (WCF) und Windows Workflow Foundation (WF) Samples for .NET Framework 4 aller Windows Communication Foundation (WCF) herunterladen und WFWF Beispiele.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF) and WFWF samples. Dieses Beispiel befindet sich im folgenden Verzeichnis.This sample is located in the following directory.

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

Siehe auchSee Also