Beispiel zu WebContentTypeMapperWebContentTypeMapper Sample

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

Das WebHttpEndpoint-Element bindet den Webnachrichtenencoder ein, sodass WCFWCF JSON-, XML- oder unformatierte binäre Nachrichten am gleichen Endpunkt empfangen kann.The WebHttpEndpoint element plugs in the Web message encoder, which allows WCFWCF 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.

WCFWCF stellt einen Satz von Standardzuordnungen für Inhaltstypen bereit. 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, rufen Sie Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 auf, um alle Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) - und WFWF -Beispiele herunterzuladen.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)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