Bagikan melalui


Elemen <httpListener> (Pengaturan Jaringan)

Menyesuaikan parameter yang digunakan oleh kelas HttpListener.

<konfigurasi>
  <system.net>
    <pengaturan>
      <httpListener>

Sintaks

<httpListener  
  unescapeRequestUrl="true|false"  
/>  

Jenis

Atribut dan Elemen

Bagian berikut menjelaskan atribut, elemen turunan, dan elemen induk.

Atribut

Atribut Deskripsi
unescapeRequestUrl Nilai Boolean yang menunjukkan jika instans HttpListener menggunakan URI unescaped mentah alih-alih URI yang dikonversi.

Elemen Anak

Tidak ada.

Elemen Induk

Elemen Deskripsi
settings Mengonfigurasi opsi jaringan dasar untuk namespace System.Net.

Keterangan

Atribut unescapeRequestUrl menunjukkan jika HttpListener menggunakan URI unescaped mentah alih-alih URI yang dikonversi tempat nilai yang dikodekan persen dikonversi dan langkah-langkah normalisasi lainnya diambil.

Saat instans HttpListener menerima permintaan melalui layanan http.sys, instans string URI yang disediakan oleh http.sys akan dibuat, dan menampilkannya sebagai properti HttpListenerRequest.Url.

Layanan http.sys memperlihatkan dua string URI permintaan:

  • URI mentah

  • URI yang dikonversi

URI mentah adalah System.Uri yang disediakan di baris permintaan dari permintaan HTTP:

GET /path/

Host: www.contoso.com

URI mentah yang disediakan oleh http.sys untuk permintaan yang disebutkan di atas, adalah "/path/". Ini mewakili string yang mengikuti kata kerja HTTP saat dikirim melalui jaringan.

Layanan http.sys membuat URI yang dikonversi dari informasi yang diberikan dalam permintaan menggunakan URI yang disediakan di baris permintaan HTTP dan header Host untuk menentukan server asal tempat permintaan harus diteruskan. Ini dilakukan dengan membandingkan informasi dari permintaan dengan satu set awalan URI terdaftar. Dokumentasi HTTP Server SDK merujuk pada URI yang dikonversi ini sebagai struktur HTTP_COOKED_URL.

Agar dapat membandingkan permintaan dengan awalan URI terdaftar, beberapa normalisasi permintaan perlu dilakukan. Untuk sampel di atas, URI yang dikonversi adalah sebagai berikut:

http://www.contoso.com/path/

Layanan http.sys menggabungkan nilai properti Uri.Host dan string di baris permintaan untuk membuat URI yang dikonversi. Selain itu, kelas http.sys dan System.Uri juga melakukan hal berikut:

  • Membatalkan escape semua nilai yang dikodekan persen.

  • Mengonversi karakter non-ASCII yang dikodekan persen menjadi representasi karakter UTF-16. Perhatikan bahwa karakter UTF-8 dan ANSI/DBCS didukung, begitu juga karakter Unicode (pengodean Unicode menggunakan format %uXXXX).

  • Menjalankan langkah normalisasi lainnya, seperti pemadatan jalur.

Karena permintaan tidak berisi informasi apa pun tentang pengodean yang digunakan untuk nilai yang dikodekan persen, mungkin tidak mungkin untuk menentukan pengodean yang benar hanya dengan menguraikan nilai yang dikodekan persen.

Oleh karena itu http.sys, menyediakan dua kunci registri untuk memodifikasi proses:

Kunci Registri Nilai Default Deskripsi
EnableNonUTF8 1 Jika nol, http.sys hanya menerima URL yang dikodekan UTF-8.

Jika bukan nol, http.sys juga menerima URL yang dikodekan ANSI atau DBCS dalam permintaan.
FavorUTF8 1 Jika bukan nol, http.sys selalu mencoba mendekode URL sebagai UTF-8 terlebih dahulu; jika konversi tersebut gagal dan EnableNonUTF8 bukan nol, Http.sys kemudian mencoba mendekodekannya sebagai ANSI atau DBCS.

Jika nol (dan EnableNonUTF8 bukan nol), http.sys mencoba mendekodenya sebagai ANSI atau DBCS; jika itu tidak berhasil, ini akan mencoba konversi UTF-8.

Saat HttpListener menerima permintaan, ini menggunakan URI yang dikonversi dari http.sys sebagai input ke properti Url.

Ada kebutuhan untuk mendukung karakter selain karakter dan angka di URI. Contohnya adalah URI berikut, yang digunakan untuk mengambil informasi pelanggan untuk nomor pelanggan "1/3812":

http://www.contoso.com/Customer('1%2F3812')/

Perhatikan garis miring yang dikodekan persen dalam Uri (%2F). Ini perlu, karena dalam kasus ini karakter garis miring mewakili data dan bukan pemisah jalur.

Meneruskan string ke konstruktor Uri akan mengarah ke URI berikut:

http://www.contoso.com/Customer('1/3812')/

Memisahkan jalur menjadi segmen-segmennya akan menghasilkan elemen-elemen berikut:

Customer('1

3812')

Ini bukanlah niat dari pengirim permintaan.

Jika atribut unescapeRequestUrl diatur ke false, maka saat HttpListener menerima permintaan, atribut tersebut menggunakan URI mentah alih-alih URI yang dikonversi dari http.sys sebagai input ke properti Url.

Nilai default untuk atribut unescapeRequestUrl adalah true.

Properti UnescapeRequestUrl dapat digunakan untuk mendapatkan nilai atribut unescapeRequestUrl saat ini dari file konfigurasi yang berlaku.

Contoh

Contoh berikut menunjukkan cara mengonfigurasi kelas HttpListener saat menerima permintaan untuk menggunakan URI mentah alih-alih URI yang dikonversi dari http.sys sebagai input ke properti Url.

<configuration>  
  <system.net>  
    <settings>  
      <httpListener  
        unescapeRequestUrl="false"  
      />  
    </settings>  
  </system.net>  
</configuration>  

Informasi Elemen

Namespace layanan: System.Net

Lihat juga