Bagikan melalui


Contoh WebContentTypeMapper

Sampel WebContentTypeMapper menunjukkan cara memetakan tipe isi baru ke format isi pesan Windows Communication Foundation (WCF).

Elemen WebHttpEndpoint ini mencolokkan encoder pesan Web, yang memungkinkan WCF menerima pesan biner JSON, XML, atau mentah di titik akhir yang sama. Encoder menentukan format isi pesan dengan melihat jenis konten HTTP permintaan. Sampel ini memperkenalkan WebContentTypeMapper kelas , yang memungkinkan pengguna untuk mengontrol pemetaan antara jenis konten dan format isi.

WCF menyediakan serangkaian pemetaan default untuk jenis konten. Misalnya, application/json diubah menjadi JSON dan text/xml diubah menjadi XML. Tipe konten apa pun yang tidak dipetakan ke JSON atau XML dipetakan ke format biner mentah.

Dalam beberapa skenario (misalnya, API gaya push), pengembang layanan tidak mengontrol jenis konten yang dikembalikan oleh klien. Misalnya, klien mungkin mengembalikan JSON sebagai text/javascript alih-alih application/json. Dalam hal ini, pengembang layanan harus menyediakan jenis yang berasal dari WebContentTypeMapper untuk menangani jenis konten yang diberikan dengan benar, seperti yang ditunjukkan dalam kode sampel berikut.

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

Tipe harus mengganti metode GetMessageFormatForContentType(String). Metode harus mengevaluasi contentType argumen dan mengembalikan salah satu nilai berikut: Json, , XmlRaw, atau Default. Mengembalikan Default ke penggunaan pemetaan encoder pesan Web default. Dalam kode sampel sebelumnya, jenis konten text/javascript dipetakan ke JSON, dan semua pemetaan lainnya tetap tidak berubah.

Untuk menggunakan kelas JsonContentTypeMapper, gunakan yang berikut di Web.configAnda:

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

Untuk memverifikasi persyaratan untuk menggunakan JsonContentTypeMapper, hapus atribut contentTypeMapper dari file konfigurasi di atas. Halaman klien gagal dimuat saat mencoba menggunakan text/javascript untuk mengirim konten JSON.

Untuk menyiapkan, mengompilasi, dan menjalankan sampel

  1. Pastikan Anda telah melakukan Prosedur Penyiapan One-Time untuk Sampel Windows Communication Foundation.

  2. Bangun solusi WebContentTypeMapperSample.sln seperti yang dijelaskan dalam Membangun Sampel Windows Communication Foundation.

  3. Navigasi ke http://localhost/ServiceModelSamples/JCTMClientPage.htm (jangan buka JCTMClientPage.htm di browser dari dalam direktori proyek).