Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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-Methode überschreiben. Die Methode muss das contentType-Argument auswerten und einen der folgenden Werte zurückgeben: Json, Xml, Raw oder Default. Das Zurückgeben von Default 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
Stellen Sie sicher, dass Sie Einmaliges Setupverfahren für Windows Communication Foundation-Beispiele ausgeführt haben.
Erstellen Sie die Projektmappe WebContentTypeMapperSample.sln, wie in Erstellen der Windows Communication Foundation-Beispiele beschrieben.
Navigieren Sie zu https://localhost/ServiceModelSamples/JCTMClientPage.htm (öffnen Sie JCTMClientPage.htm nicht im Browser aus dem Projektverzeichnis).
Hinweis: |
|---|
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.
<Installationslaufwerk>:\WF_WCF_Samples\WCF\Extensibility\Ajax\WebContentTypeMapper
|
Hinweis: