Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A WebContentTypeMapper minta bemutatja, hogyan képezhet le új tartalomtípusokat a Windows Communication Foundation (WCF) üzenettörzs-formátumaihoz.
A WebHttpEndpoint elem csatlakozik a webes üzenetkódolóhoz, amely lehetővé teszi, hogy a WCF ugyanazon a kapcsolaton keresztül JSON-, XML- vagy nyers bináris üzeneteket fogadjon. A kódoló a kérelem HTTP-tartalomtípusával határozza meg az üzenet törzsformátumát. Ez a minta bemutatja az WebContentTypeMapper osztályt, amely lehetővé teszi a felhasználó számára a tartalomtípus és a törzsformátum közötti leképezés szabályozását.
A WCF a tartalomtípusok alapértelmezett leképezéseit biztosítja. Leképezi például a JSON-t, application/json és text/xml XML-nek megfelelteti. Minden olyan tartalomtípus, amely nem JSON-ra vagy XML-re van leképezve, nyers bináris formátumra van leképezve.
Bizonyos esetekben (például leküldéses stílusú API-k) a szolgáltatásfejlesztő nem szabályozza az ügyfél által visszaadott tartalomtípust. Előfordulhat például, hogy az ügyfelek JSON-t text/javascript adnak vissza ahelyett, hogy application/json. Ebben az esetben a szolgáltatásfejlesztőnek olyan típust kell megadnia, amely a WebContentTypeMapper megadott tartalomtípus helyes kezeléséhez származik, ahogyan az alábbi mintakódban látható.
public class JsonContentTypeMapper : WebContentTypeMapper
{
public override WebContentFormat
GetMessageFormatForContentType(string contentType)
{
if (contentType == "text/javascript")
{
return WebContentFormat.Json;
}
else
{
return WebContentFormat.Default;
}
}
}
A típusnak a GetMessageFormatForContentType(String) metódust kell felülbírálnia. A metódusnak ki kell értékelnie az contentType argumentumot, és a következő értékek egyikét kell visszaadnia: Json, Xml, Rawvagy Default. A Default visszatérés halasztása a webes üzenetkódoló alapértelmezett leképezéseit követi. Az előző mintakódban a text/javascript tartalomtípus JSON-ra van leképezve, és az összes többi leképezés változatlan marad.
Az JsonContentTypeMapper osztály használatához a következő lépéseket hajtsa végre Web.config-ban:
<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>
A JsonContentTypeMapper használatának ellenőrzéséhez távolítsa el a contentTypeMapper attribútumot a fenti konfigurációs fájlból. Az ügyféloldal nem töltődik be, amikor megpróbálja a text/javascript használatával JSON-tartalmat küldeni.
A példa beállítása, elkészítése és futtatása
Győződjön meg arról, hogy elvégezte a Windows Communication Foundation-minták One-Time beállítási eljárását.
A WebContentTypeMapperSample.sln megoldást a Windows Communication Foundation minták építésében leírtak szerint készítse el.
Lépjen be a
http://localhost/ServiceModelSamples/JCTMClientPage.htmútvonalra (ne nyissa meg JCTMClientPage.htm fájlt a böngészőben a projektkönyvtárból).