Bagikan melalui


Kelas System.Net.HttpListener

Artikel ini menyediakan keterangan tambahan untuk dokumentasi referensi untuk API ini.

Dengan menggunakan kelas , HttpListener Anda dapat membuat pendengar protokol HTTP sederhana yang merespons permintaan HTTP. Pendengar aktif selama masa HttpListener pakai objek dan berjalan dalam aplikasi Anda dengan izinnya.

Untuk menggunakan HttpListener, buat instans baru kelas menggunakan HttpListener konstruktor dan gunakan Prefixes properti untuk mendapatkan akses ke koleksi yang menyimpan string yang menentukan awalan Pengidentifikasi Sumber Daya Seragam (URI) mana yang harus diproses HttpListener .

String awalan URI terdiri dari skema (http atau https), host, port opsional, dan jalur opsional. Contoh string awalan lengkap adalah http://www.contoso.com:8080/customerData/. Awalan harus diakhiri dengan garis miring ("/"). Objek HttpListener dengan awalan yang paling cocok dengan URI yang diminta merespons permintaan. Beberapa HttpListener objek tidak dapat menambahkan awalan yang sama; Win32Exception pengecualian dilemparkan jika HttpListener menambahkan awalan yang sudah digunakan.

Ketika port ditentukan, elemen host dapat diganti dengan "*" untuk menunjukkan bahwa HttpListener permintaan penerimaan yang dikirim ke port jika URI yang diminta tidak cocok dengan awalan lainnya. Misalnya, untuk menerima semua permintaan yang dikirim ke port 8080 ketika URI yang diminta tidak ditangani oleh apa pun HttpListener, awalannya adalah http://*:8080/. Demikian pula, untuk menentukan bahwa menerima semua permintaan yang HttpListener dikirim ke port, ganti elemen host dengan karakter "+". Contohnya, https://+:8080. Karakter "*" dan "+" dapat hadir dalam awalan yang menyertakan jalur.

Subdomain wildcard didukung dalam awalan URI yang dikelola oleh HttpListener objek. Untuk menentukan subdomain kartubebas, gunakan karakter "*" sebagai bagian dari nama host dalam awalan URI. Misalnya, http://*.foo.com/. Teruskan ini sebagai argumen ke Add metode .

Peringatan

Pengikatan kartubebas tingkat atas (http://*:8080/ dan http://+:8080) tidak boleh digunakan. Pengikatan wildcard tingkat atas dapat mengekspos aplikasi Anda terhadap kerentanan keamanan. Ini berlaku untuk wildcard kuat dan lemah. Gunakan nama host eksplisit alih-alih wildcard. Pengikatan wildcard subdomain (misalnya, *.mysub.com) tidak memiliki risiko keamanan ini jika Anda mengontrol seluruh domain induk (alih-alih *.com, yang rentan). Lihat rfc7230 bagian-5.4 untuk informasi lebih lanjut.

Untuk mulai mendengarkan permintaan dari klien, tambahkan awalan URI ke koleksi dan panggil Start metode . HttpListener menawarkan model sinkron dan asinkron untuk memproses permintaan klien. Permintaan dan respons terkait diakses menggunakan HttpListenerContext objek yang dikembalikan oleh GetContext metode atau rekan asinkronnya, BeginGetContext metode dan EndGetContext .

Model sinkron sesuai jika aplikasi Anda harus memblokir saat menunggu permintaan klien dan jika Anda hanya ingin memproses satu permintaan pada satu waktu. Menggunakan model sinkron, panggil GetContext metode , yang menunggu klien mengirim permintaan. Metode mengembalikan objek kepada Anda untuk diproses HttpListenerContext ketika terjadi.

Dalam model asinkron yang lebih kompleks, aplikasi Anda tidak memblokir saat menunggu permintaan dan setiap permintaan diproses dalam utas eksekusinya sendiri. BeginGetContext Gunakan metode untuk menentukan metode yang ditentukan aplikasi yang akan dipanggil untuk setiap permintaan masuk. Dalam metode itu EndGetContext , panggil metode untuk mendapatkan permintaan, memprosesnya, dan merespons.

Dalam salah satu model, permintaan masuk diakses menggunakan HttpListenerContext.Request properti dan diwakili oleh HttpListenerRequest objek. Demikian pula, respons diakses menggunakan HttpListenerContext.Response properti dan diwakili oleh HttpListenerResponse objek. Objek-objek ini berbagi beberapa fungsionalitas dengan HttpWebRequest objek dan HttpWebResponse , tetapi objek terakhir tidak dapat digunakan bersama dengan HttpListener karena mereka menerapkan klien, bukan server, perilaku.

Dapat HttpListener memerlukan autentikasi klien. Anda dapat menentukan skema tertentu untuk digunakan untuk autentikasi, atau Anda dapat menentukan delegasi yang menentukan skema yang akan digunakan. Anda harus memerlukan beberapa bentuk autentikasi untuk mendapatkan informasi tentang identitas klien. Untuk informasi tambahan, lihat Userproperti , AuthenticationSchemes, dan AuthenticationSchemeSelectorDelegate .

Catatan

Jika Anda membuat HttpListener menggunakan https, Anda harus memilih Sertifikat Server untuk pendengar tersebut. Jika tidak, permintaan untuk ini HttpListener akan gagal dengan penutupan koneksi yang tidak terduga.

Catatan

Anda dapat mengonfigurasi Sertifikat Server dan opsi pendengar lainnya dengan menggunakan Network Shell (netsh.exe). Lihat Network Shell (Netsh) untuk detail selengkapnya. Executable mulai dikirim dengan Windows Server 2008 dan Windows Vista.

Catatan

Jika Anda menentukan beberapa skema autentikasi untuk HttpListener, pendengar akan menantang klien dalam urutan berikut: Negotiate, , NTLMDigest, lalu Basic.

HTTP.sys

Kelas HttpListener ini dibangun di atas HTTP.sys, yang merupakan pendengar mode kernel yang menangani semua lalu lintas HTTP untuk Windows. HTTP.sys menyediakan manajemen koneksi, pembatasan bandwidth, dan pengelogan server web. Gunakan alat HttpCfg.exe untuk menambahkan sertifikat SSL.