Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W przykładzie WebContentTypeMapper pokazano, jak mapować nowe typy zawartości na formaty treści komunikatów programu Windows Communication Foundation (WCF).
Element WebHttpEndpoint podłącza koder komunikatów sieci Web, który umożliwia usłudze WCF odbieranie komunikatów binarnych JSON, XML lub nieprzetworzonych komunikatów binarnych w tym samym punkcie końcowym. Koder określa format treści komunikatu, sprawdzając typ zawartości HTTP żądania. W tym przykładzie przedstawiono klasę WebContentTypeMapper , która umożliwia użytkownikowi kontrolowanie mapowania między typem zawartości a formatem treści.
Program WCF udostępnia zestaw domyślnych mapowań dla typów zawartości. Na przykład application/json mapuje na format JSON i text/xml mapuje na xml. Każdy typ zawartości, który nie jest mapowany na format JSON lub XML, jest mapowany na nieprzetworzone formaty binarne.
W niektórych scenariuszach (na przykład API w stylu push) deweloper usługi nie kontroluje typu zawartości zwracanej przez klienta. Na przykład klienci mogą zwracać kod JSON jako text/javascript zamiast application/json. W takim przypadku deweloper usługi musi podać typ, który pochodzi z WebContentTypeMapper , aby poprawnie obsłużyć dany typ zawartości, jak pokazano w poniższym przykładowym kodzie.
public class JsonContentTypeMapper : WebContentTypeMapper
{
public override WebContentFormat
GetMessageFormatForContentType(string contentType)
{
if (contentType == "text/javascript")
{
return WebContentFormat.Json;
}
else
{
return WebContentFormat.Default;
}
}
}
Typ musi zastąpić metodę GetMessageFormatForContentType(String) . Metoda musi ocenić contentType argument i zwrócić jedną z następujących wartości: Json, , XmlRawlub Default. Zwracanie Default oznacza użycie domyślnych mapowań kodera komunikatów sieci Web. W poprzednim przykładowym kodzie text/javascript typ zawartości jest mapowany na kod JSON, a wszystkie inne mapowania pozostają niezmienione.
Aby użyć klasy JsonContentTypeMapper, użyj następującego polecenia w 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>
Aby sprawdzić wymaganie dotyczące używania atrybutu JsonContentTypeMapper, usuń atrybut contentTypeMapper z powyższego pliku konfiguracji. Strona klienta nie ładuje się podczas próby wysłania zawartości JSON za pomocą text/javascript.
Aby skonfigurować, skompilować i uruchomić przykładowy program
Upewnij się, że wykonano procedurę instalacji One-Time dla przykładów programu Windows Communication Foundation.
Skompiluj rozwiązanie WebContentTypeMapperSample.sln zgodnie z opisem w temacie Building the Windows Communication Foundation Samples (Tworzenie przykładów programu Windows Communication Foundation).
Przejdź do
http://localhost/ServiceModelSamples/JCTMClientPage.htm(nie otwieraj JCTMClientPage.htm w przeglądarce w katalogu projektu).