Aracılığıyla paylaş


WebContentTypeMapper Örneği

WebContentTypeMapper örneği, yeni içerik türlerinin Windows Communication Foundation (WCF) ileti gövdesi biçimlerine nasıl eşleneceğine ilişkin bilgileri gösterir.

WebHttpEndpoint öğesi, WCF'nin aynı uç noktada JSON, XML veya ham ikili iletileri almasını sağlayan Web iletisi kodlayıcısını ekler. Kodlayıcı, isteğin HTTP içerik türüne bakarak iletinin gövde biçimini belirler. Bu örnek, kullanıcının içerik türü ve gövde biçimi arasındaki eşlemeyi denetlemesini sağlayan sınıfını tanıtır WebContentTypeMapper .

WCF, içerik türleri için bir dizi varsayılan eşleme sağlar. Örneğin, application/json JSON ile eşler ve text/xml XML ile eşler. JSON veya XML ile eşlenmeyen tüm içerik türleri ham ikili biçime eşlenir.

Bazı senaryolarda (örneğin, gönderme stili API'ler), hizmet geliştiricisi istemci tarafından döndürülen içerik türünü denetlemez. Örneğin, istemciler text/javascript yerine application/json JSON döndürebilir. Bu durumda, hizmet geliştiricisinin, aşağıdaki örnek kodda gösterildiği gibi, verilen içerik türünü doğru şekilde işlemek için WebContentTypeMapper türünden türetilmiş bir tür sağlaması gerekir.

public class JsonContentTypeMapper : WebContentTypeMapper
{
    public override WebContentFormat
               GetMessageFormatForContentType(string contentType)
    {
        if (contentType == "text/javascript")
        {
            return WebContentFormat.Json;
        }
        else
        {
            return WebContentFormat.Default;
        }
    }
}

Türün GetMessageFormatForContentType(String) yöntemini geçersiz kılmalıdır. Yöntem contentType bağımsız değişkenini değerlendirmeli ve şu değerlerden birini döndürmelidir: Json, Xml, Raw veya Default. Varsayılan Web iletisi kodlayıcı eşlemelerine dönmek için Default kullanılır. Önceki örnek kodda text/javascript , içerik türü JSON ile eşlenir ve diğer tüm eşlemeler değişmeden kalır.

JsonContentTypeMapper sınıfını kullanmak için, Web.config'de aşağıdakini kullanın:

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

JsonContentTypeMapper kullanma gereksinimini doğrulamak için yukarıdaki yapılandırma dosyasından contentTypeMapper özniteliğini kaldırın. text/javascript ile JSON içeriği göndermeye çalışılırken istemci sayfası yüklenemiyor.

Örneği ayarlamak, derlemek ve çalıştırmak için

  1. Windows Communication Foundation Örnekleri içinOne-Time Kurulum Yordamını yaptığınızdan emin olun.

  2. WebContentTypeMapperSample.sln adlı çözümü, Windows Communication Foundation Örnekleri Oluşturma bölümünde açıklandığı gibi oluşturun.

  3. adresine http://localhost/ServiceModelSamples/JCTMClientPage.htm gidin (JCTMClientPage.htm proje dizininden tarayıcıda açmayın).