Sdílet prostřednictvím


Příklad WebContentTypeMapper

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 vrátit JSON jako text/javascript místo 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. Vrácení Default se odkazuje na výchozí 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.

Pro použití třídy JsonContentTypeMapper použijte v Web.configná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í JSON obsahu pomocí text/javascript se stránka klienta selže načítání.

Jak nastavit, sestavit a spustit ukázku

  1. Ujistěte se, že jste provedli instalační proceduru One-Time pro ukázky Windows Communication Foundation.

  2. Sestavte řešení WebContentTypeMapperSample.sln, jak je popsáno v kapitole Vytváření ukázek Windows Communication Foundation.

  3. Přejděte na http://localhost/ServiceModelSamples/JCTMClientPage.htm (neotevírejte JCTMClientPage.htm v prohlížeči v adresáři projektu).