WebContentTypeMapper – ukázka
Ukázka WebContentTypeMapper ukazuje, jak mapovat nové typy obsahu na formáty textu zprávy WCF (Windows Communication Foundation).
Element WebHttpEndpoint připojí kodér webových zpráv, který wcf umožňuje přijímat JSON, XML nebo nezpracované binární zprávy na stejném koncovém bodu. Kodér určuje základní formát zprávy tak, že se podívá na typ obsahu HTTP požadavku. Tato ukázka představuje WebContentTypeMapper třídu, která uživateli umožňuje řídit mapování mezi typem obsahu a základním formátem.
WCF poskytuje sadu výchozích mapování pro typy obsahu. Například application/json
se mapuje na JSON a text/xml
mapuje se na XML. Jakýkoli typ obsahu, který není namapován na JSON nebo XML, se mapuje na nezpracovaný binární formát.
V některých scénářích (například rozhraní API ve stylu push) neřídí vývojář služby typ obsahu vrácený klientem. Klienti můžou například místo text/javascript
application/json
. V tomto případě musí vývojář služby poskytnout typ, který je odvozen od WebContentTypeMapper zpracování daného typu obsahu správně, jak je znázorněno v následujícím vzorovém kódu.
public class JsonContentTypeMapper : WebContentTypeMapper
{
public override WebContentFormat
GetMessageFormatForContentType(string contentType)
{
if (contentType == "text/javascript")
{
return WebContentFormat.Json;
}
else
{
return WebContentFormat.Default;
}
}
}
Typ musí přepsat metodu GetMessageFormatForContentType(String) . Metoda musí vyhodnotit contentType
argument a vrátit jednu z následujících hodnot: Json, Xml, Raw, nebo Default. Default Vrácení deferů do výchozího mapování kodéru webových zpráv V předchozím ukázkovém kódu text/javascript
se typ obsahu mapuje na JSON a všechna ostatní mapování zůstanou beze změny.
Chcete-li použít JsonContentTypeMapper
třídu, použijte v souboru Web.config následující:
<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>
Pokud chcete ověřit požadavek na použití JsonContentTypeMapper, odeberte atribut contentTypeMapper z výše uvedeného konfiguračního souboru. Při pokusu o odeslání text/javascript
obsahu JSON se stránce klienta nepodaří načíst.
Nastavení, sestavení a spuštění ukázky
Ujistěte se, že jste pro ukázky windows Communication Foundation provedli jednorázovou instalační proceduru.
Sestavte řešení WebContentTypeMapperSample.sln, jak je popsáno v části Sestavení ukázek Windows Communication Foundation.
Přejděte na
http://localhost/ServiceModelSamples/JCTMClientPage.htm
(neotevírejte JCTMClientPage.htm v prohlížeči v adresáři projektu).