WebContentTypeMapper-voorbeeld
In het voorbeeld WebContentTypeMapper ziet u hoe u nieuwe inhoudstypen kunt toewijzen aan wcF-berichttekstindelingen (Windows Communication Foundation).
Het WebHttpEndpoint element wordt aangesloten op de webberichtcoderingsprogramma, waarmee WCF JSON-, XML- of onbewerkte binaire berichten op hetzelfde eindpunt kan ontvangen. De encoder bepaalt de hoofdtekst van het bericht door naar het HTTP-inhoudstype van de aanvraag te kijken. In dit voorbeeld wordt de WebContentTypeMapper klasse geïntroduceerd, waarmee de gebruiker de toewijzing tussen het inhoudstype en de hoofdtekstindeling kan beheren.
WCF biedt een set standaardtoewijzingen voor inhoudstypen. Bijvoorbeeld: application/json
wordt toegewezen aan JSON en text/xml
wordt toegewezen aan XML. Elk inhoudstype dat niet is toegewezen aan JSON of XML, wordt toegewezen aan onbewerkte binaire indeling.
In sommige scenario's (bijvoorbeeld PUSH-API's) bepaalt de serviceontwikkelaar niet het inhoudstype dat door de client wordt geretourneerd. Clients kunnen bijvoorbeeld JSON retourneren, zoals text/javascript
in plaats van application/json
. In dit geval moet de serviceontwikkelaar een type opgeven waaruit het opgegeven inhoudstype WebContentTypeMapper correct wordt verwerkt, zoals wordt weergegeven in de volgende voorbeeldcode.
public class JsonContentTypeMapper : WebContentTypeMapper
{
public override WebContentFormat
GetMessageFormatForContentType(string contentType)
{
if (contentType == "text/javascript")
{
return WebContentFormat.Json;
}
else
{
return WebContentFormat.Default;
}
}
}
Het type moet de GetMessageFormatForContentType(String) methode overschrijven. De methode moet het contentType
argument evalueren en een van de volgende waarden retourneren: Json, Xml, Rawof Default. Retourneert Default uitstel naar de standaardtoewijzingen voor webberichtcoderingsprogramma's. In de vorige voorbeeldcode wordt het text/javascript
inhoudstype toegewezen aan JSON en blijven alle andere toewijzingen ongewijzigd.
Als u de JsonContentTypeMapper
klasse wilt gebruiken, gebruikt u het volgende in uw 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>
Als u de vereiste voor het gebruik van JsonContentTypeMapper wilt controleren, verwijdert u het kenmerk contentTypeMapper uit het bovenstaande configuratiebestand. De clientpagina kan niet worden geladen wanneer u probeert JSON-inhoud te text/javascript
verzenden.
Het voorbeeld instellen, compileren en uitvoeren
Zorg ervoor dat u de eenmalige installatieprocedure voor de Windows Communication Foundation-voorbeelden hebt uitgevoerd.
Bouw de oplossing WebContentTypeMapperSample.sln zoals beschreven in het bouwen van de Windows Communication Foundation-voorbeelden.
Navigeer naar
http://localhost/ServiceModelSamples/JCTMClientPage.htm
(open JCTMClientPage.htm niet in de browser vanuit de projectmap).