Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Modul HTTP di IIS 7 memungkinkan pengembang untuk memperluas atau mengganti fungsionalitas IIS inti. Misalnya, Anda dapat menulis modul autentikasi hash yang menggantikan modul yang disertakan dengan IIS 7. Meskipun beberapa fungsionalitas yang disediakan oleh modul kode asli mungkin menyerupai fungsionalitas yang sebelumnya tersedia dengan filter ISAPI, modul kode asli dirancang secara berbeda dan menyediakan set fitur yang jauh lebih kaya daripada filter ISAPI.
Persyaratan untuk Modul HTTP Native-Code
Menambahkan Fungsi Pendaftaran yang Diekspor
Modul HTTP diperlukan untuk mengekspor fungsi RegisterModule . Anda dapat mengekspor fungsi ini dengan membuat file definisi modul (.def) untuk proyek Anda, atau Anda dapat mengkompilasi modul dengan menggunakan sakelar /EXPORT:RegisterModule .
Menentukan Pemberitahuan dan Prioritas Modul
Saat membuat RegisterModule fungsi, Anda menentukan bitmask yang berisi daftar pemberitahuan yang akan diproses modul tingkat permintaan Anda (untuk informasi selengkapnya, lihat Konstanta Pemrosesan Permintaan). Misalnya, modul tingkat permintaan dapat menentukan bahwa modul akan menyediakan metode untuk memproses pemberitahuan RQ_BEGIN_REQUEST dan RQ_MAP_PATH pasca-pemberitahuan. Demikian pula, modul tingkat global dapat menentukan bahwa modul tersebut akan menyediakan metode untuk memproses GL_APPLICATION_START dan pemberitahuan GL_APPLICATION_STOP .
Fungsi ini RegisterModule juga memungkinkan Anda menentukan prioritas untuk modul. Prioritas yang tersedia adalah PRIORITY_ALIAS_FIRST, , PRIORITY_ALIAS_HIGHPRIORITY_ALIAS_MEDIUM, PRIORITY_ALIAS_LOW, dan PRIORITY_ALIAS_LAST. Ketika modul terdaftar, modul diproses dalam urutan pengaturan prioritas dan konfigurasi. Misalnya, jika Anda membuat modul HTTP yang mendaftar sebagai modul prioritas sedang, modul Anda tidak akan diproses sampai semua modul berprioritas tinggi telah diproses. Anda dapat mengonfigurasi modul untuk diproses sebelum modul berprioritas sedang lainnya, dan modul Anda akan diproses sebelum modul berprioritas rendah.
Catatan
Urutan tingkat prioritas dibalik untuk RQ_SEND_RESPONSE pemberitahuan.
Membuat Modul Request-Level
Membuat Pabrik Modul
Modul tingkat permintaan kode asli harus menyediakan pabrik modul yang membuat instans kelas CHttpModule . Pabrik modul akan mewarisi dari antarmuka IHttpModuleFactory .
Untuk informasi selengkapnya tentang cara membuat pabrik modul, lihat contoh kode di Panduan: Membuat Modul HTTP Request-Level Dengan Menggunakan Kode Asli.
Membuat Kelas yang Berasal dari CHttpModule
Fungsionalitas pemrosesan utama untuk modul HTTP tingkat permintaan disediakan melalui modul yang berasal dari kelas dasar CHttpModule . Kelas ini harus berisi metode panggilan balik untuk setiap pemberitahuan atau pasca-pemberitahuan yang tercantum dalam RegisterModule fungsi. Misalnya, jika modul Anda terdaftar untuk pemberitahuan RQ_AUTHENTICATE_REQUEST dan RQ_AUTHORIZE_REQUEST pasca-pemberitahuan, kelas Anda harus berisi metode OnAuthenticateRequest dan OnPostAuthorizeRequest .
Mengembalikan dari Metode CHttpModule
Ketika metode di CHttpModule kelas telah selesai diproses, setiap metode harus mengembalikan nilai enumerasi REQUEST_NOTIFICATION_STATUS . Nilai ini menentukan bagaimana IIS akan menangani kondisi keluar dari metode kelas. Misalnya, nilai pengembalian RQ_NOTIFICATION_CONTINUE menginformasikan IIS untuk terus memproses permintaan. Sebaliknya, nilai pengembalian RQ_NOTIFICATION_FINISH_REQUEST menginstruksikan IIS untuk menghentikan pemrosesan pada permintaan saat ini.
Pembersihan CHttpModule
Setelah modul selesai diproses, IIS akan memanggil metode CHttpModule::D ispose modul untuk menghapus CHttpModule kelas dari memori.
Membuat Modul Global-Level
Membuat Kelas yang Berasal dari CGlobalModule
Fungsionalitas pemrosesan utama untuk modul HTTP tingkat global disediakan melalui modul yang berasal dari kelas CGlobalModule dasar. Kelas ini harus berisi metode panggilan balik untuk setiap pemberitahuan yang tercantum dalam RegisterModule fungsi . Misalnya, jika modul Anda terdaftar untuk GL_APPLICATION_START dan pemberitahuan GL_APPLICATION_STOP , kelas Anda harus berisi metode OnGlobalApplicationStart dan OnGlobalApplicationStop .
Mengembalikan dari Metode CGlobalModule
Ketika metode di CGlobalModule kelas telah selesai diproses, setiap metode harus mengembalikan nilai enumerasi GLOBAL_NOTIFICATION_STATUS . Nilai ini menentukan bagaimana IIS akan menangani kondisi keluar dari metode kelas. Misalnya, nilai pengembalian GL_NOTIFICATION_CONTINUE menginformasikan IIS untuk terus memproses pemberitahuan. Sebaliknya, nilai pengembalian GL_NOTIFICATION_HANDLED menginstruksikan IIS untuk berhenti memproses pada pemberitahuan saat ini.
Pembersihan CGlobalModule
Setelah modul selesai diproses, IIS akan memanggil metode CGlobalModule::Terminate modul. Modul Anda harus menggunakan metode ini untuk menghapus kelas Anda CGlobalModule dari memori.
Lihat juga
Panduan: Membuat Modul HTTP Request-Level Dengan Menggunakan Kode Asli
Panduan: Membuat Modul HTTP Global-Level Dengan Menggunakan Kode Asli
Membuat Modul HTTP Native-Code