Sdílet prostřednictvím


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/javascriptapplication/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

  1. Ujistěte se, že jste pro ukázky windows Communication Foundation provedli jednorázovou instalační proceduru.

  2. Sestavte řešení WebContentTypeMapperSample.sln, jak je popsáno v části Sestavení 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).