Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Exemplet WebContentTypeMapper visar hur du mappar nya innehållstyper till WCF-meddelandetextformat (Windows Communication Foundation).
Elementet WebHttpEndpoint ansluts i webbmeddelandekodaren, vilket gör att WCF kan ta emot JSON-, XML- eller raw-binära meddelanden på samma slutpunkt. Kodaren avgör brödtextformatet för meddelandet genom att titta på HTTP-innehållstypen för begäran. Det här exemplet introducerar WebContentTypeMapper klassen, vilket gör att användaren kan styra mappningen mellan innehållstyp och brödtextformat.
WCF tillhandahåller en uppsättning standardmappningar för innehållstyper. Till exempel application/json mappar till JSON och text/xml mappar till XML. Alla innehållstyper som inte är mappade till JSON eller XML mappas till ett binärt raw-format.
I vissa scenarier (till exempel push-format-API:er) styr inte tjänstutvecklaren den innehållstyp som returneras av klienten. Klienter kan till exempel returnera JSON som text/javascript i stället för application/json. I det här fallet måste tjänstutvecklaren ange en typ som härleds från WebContentTypeMapper för att hantera den angivna innehållstypen korrekt, enligt följande exempelkod.
public class JsonContentTypeMapper : WebContentTypeMapper
{
public override WebContentFormat
GetMessageFormatForContentType(string contentType)
{
if (contentType == "text/javascript")
{
return WebContentFormat.Json;
}
else
{
return WebContentFormat.Default;
}
}
}
Typen måste åsidosätta GetMessageFormatForContentType(String) metoden. Metoden måste utvärdera contentType argumentet och returnera något av följande värden: Json, Xml, Raw, eller Default. Returnerar Default återgår till standardmappningar för webbmeddelandekodare. I föregående exempelkod text/javascript mappas innehållstypen till JSON och alla andra mappningar förblir oförändrade.
Om du vill använda JsonContentTypeMapper klassen använder du följande i din 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>
Om du vill verifiera kravet på att använda JsonContentTypeMapper tar du bort attributet contentTypeMapper från konfigurationsfilen ovan. Klientsidan kan inte läsas in när du försöker använda text/javascript för att skicka JSON-innehåll.
Så här konfigurerar du, skapar och kör exemplet
Kontrollera att du har utfört One-Time installationsproceduren för Windows Communication Foundation-exempel.
Skapa lösningen WebContentTypeMapperSample.sln enligt beskrivningen i Skapa Windows Communication Foundation-exempel.
Gå till
http://localhost/ServiceModelSamples/JCTMClientPage.htm(öppna inte JCTMClientPage.htm i webbläsaren från projektkatalogen).