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.
oleh Mike Volodarsky
Pengantar
Sejak dirilis, ASP.NET telah menjadi platform pilihan untuk mengembangkan aplikasi Web di platform Windows / IIS. ASP.NET 2.0 membawa pengembangan aplikasi Web ke tingkat baru, memungkinkan pengembang untuk membangun aplikasi yang lebih kuat lebih cepat dari sebelumnya.
IIS 7 ke atas mengambil ASP.NET lebih lanjut dengan mengintegrasikan model ekstensibilitas runtime ASP.NET dengan server inti. Hal ini memungkinkan pengembang untuk sepenuhnya memperluas server IIS dengan kekayaan ASP.NET 2.0 dan .NET Framework, alih-alih menggunakan API IIS C++ yang kurang mampu. Aplikasi ASP.NET yang ada juga segera mendapat manfaat dari integrasi yang lebih ketat dengan menggunakan fitur ASP.NET yang ada seperti autentikasi Formulir, peran, dan penembolokan output untuk semua konten.
Meskipun IIS menyediakan integrasi ASP.NET yang ditingkatkan secara default, ada pilihan: IIS mendukung mode integrasi ASP.NET baru dan lama yang dapat digunakan berdampingan di server yang sama.
Artikel ini membahas peningkatan yang diperkenalkan oleh mode integrasi ASP.NET, arsitektur dua mode, dan menjelaskan cara memilih dan mengonfigurasi mode integrasi untuk aplikasi ASP.NET.
ASP.NET Peningkatan pada IIS 7 ke Atas
Integrasi ASP.NET yang lebih baik di IIS meningkatkan aplikasi yang ada dan juga memungkinkan aplikasi baru untuk memanfaatkan fitur ASP.NET dengan cara berikut:
- layanan ASP.NET dapat digunakan untuk semua tipe isi. Di masa lalu, fungsionalitas ASP.NET seperti autentikasi Formulir, peran, otorisasi URL, dan penembolokan output hanya tersedia untuk ASP.NET jenis konten seperti halaman ASPX. File statis, halaman ASP, dan tipe isi lainnya tidak dapat memperoleh manfaat dari layanan ini.
Di IIS, semua layanan ASP.NET disediakan secara seragam untuk semua konten. Misalnya, Anda dapat melindungi semua konten Web Anda, termasuk gambar dan halaman ASP, dengan solusi kontrol akses ASP.NET 2.0 yang ada yang dibangun di atas autentikasi formulir ASP.NET, keanggotaan, dan kontrol login.
- Perluas IIS sepenuhnya dengan ASP.NET. Versi IIS sebelumnya sering memerlukan ekstensibilitas server untuk dikembangkan dengan menggunakan filter ISAPI asli atau mode ekstensi ekstensi, karena keterbatasan runtime ASP.NET.
IIS memungkinkan modul ASP.NET untuk terhubung langsung ke alur server, dengan keakuratan runtime yang sama dengan modul yang dikembangkan dengan API server asli (C++). ASP.NET modul dapat dijalankan di semua tahap runtime alur pemrosesan permintaan, dan dapat dijalankan dalam urutan apa pun sehubungan dengan modul asli. API ASP.NET juga diperluas untuk memungkinkan kontrol lebih besar atas pemrosesan permintaan daripada yang dimungkinkan sebelumnya.
- Runtime server terpadu. Integrasi ASP.NET yang lebih ketat juga menyaring banyak fitur antara IIS dan ASP.NET.
IIS menyediakan konfigurasi terpadu untuk modul dan penangan IIS dan ASP.NET. Banyak fitur lain, termasuk kesalahan kustom dan pelacakan, telah disatukan untuk memungkinkan manajemen yang lebih baik dan desain aplikasi yang kohesif.
Arsitektur Integrasi ASP.NET
Dalam IIS 6.0 dan rilis sebelumnya, ASP.NET diimplementasikan sebagai ekstensi IIS ISAPI.
Dalam rilis sebelumnya, IIS memproses permintaan ke jenis konten ASP.NET lalu meneruskan permintaan tersebut ke ASP.NET ISAPI DLL, yang menghosting alur permintaan ASP.NET dan kerangka kerja halaman. Permintaan untuk non-ASP.NET konten, seperti halaman ASP atau file statis, diproses oleh IIS atau ekstensi ISAPI lainnya dan tidak terlihat oleh ASP.NET.
Batasan utama dari model ini adalah bahwa layanan yang disediakan oleh modul ASP.NET dan kode aplikasi ASP.NET kustom tidak tersedia untuk permintaan non-ASP.NET. Selain itu, modul ASP.NET tidak dapat memengaruhi bagian tertentu dari pemrosesan permintaan IIS yang terjadi sebelum dan sesudah jalur eksekusi ASP.NET.
Gambar 1: Alur & ASP.NET IIS 6.0
Di IIS, alur ASP.NET pemrosesan permintaan melapisi alur IIS secara langsung, pada dasarnya menyediakan pembungkus di atasnya alih-alih dicolokkan ke dalamnya.
IIS memproses permintaan yang tiba untuk jenis konten apa pun, dengan modul IIS asli dan modul ASP.NET yang menyediakan pemrosesan permintaan di semua tahap. Ini memungkinkan layanan yang disediakan oleh modul ASP.NET, seperti autentikasi Formulir atau cache output, untuk digunakan untuk permintaan ke halaman ASP, halaman PHP, file statis, dan sebagainya.
Kemampuan untuk menyambungkan langsung ke alur server memungkinkan ASP.NET modul untuk mengganti, menjalankan sebelum, atau berjalan setelah fungsionalitas IIS apa pun. Ini memungkinkan, misalnya, modul autentikasi kustom ASP.NET Dasar yang ditulis untuk menggunakan layanan Keanggotaan dan SQL Server database pengguna untuk menggantikan fitur autentikasi IIS Basic bawaan yang hanya berfungsi dengan akun Windows.
Selain itu, API ASP.NET yang diperluas menggunakan integrasi langsung untuk mengaktifkan lebih banyak tugas pemrosesan permintaan. Misalnya, modul ASP.NET dapat memodifikasi header permintaan sebelum komponen lain memproses permintaan, dengan menyisipkan header Accept-Language sebelum aplikasi ASP dijalankan, yang memaksa konten yang dilokalkan untuk dikirim kembali ke klien berdasarkan preferensi pengguna.
Gambar 2: Mode Terintegrasi IIS 7 ke Atas
Karena integrasi runtime, IIS dan ASP.NET dapat menggunakan konfigurasi yang sama untuk mengaktifkan dan memesan modul server, dan untuk mengonfigurasi pemetaan handler. Fungsionalitas terpadu lainnya termasuk pelacakan, kesalahan kustom, dan penembolokan output.
Kompatibilitas
Terutama, arsitektur mempertahankan arsitektur runtime ASP.NET dan API, yang memungkinkan aplikasi dan layanan ASP.NET yang ada untuk bekerja setelah penginstalan. Dengan beberapa modifikasi, aplikasi dan layanan ASP.NET yang ada dapat memanfaatkan kemampuan ASP.NET baru.
Demikian juga, pengembang dapat terus menulis aplikasi baru untuk membiasakan ASP.NET API sambil memanfaatkan manfaat integrasi runtime.
IIS terus menyediakan mode ASP.NET Klasik untuk aplikasi ASP.NET yang memiliki persyaratan kompatibilitas khusus yang tidak terpenuhi oleh mode Terintegrasi. Administrator dapat memilih mode integrasi yang diinginkan per kumpulan aplikasi, yang memungkinkan aplikasi yang menggunakan mode ASP.NET baru dan Klasik untuk berfungsi berdampingan di server yang sama.
Memigrasikan Aplikasi ASP.NET ke IIS 7 dan Mode Terintegrasi Di Atas
Di IIS, ASP.NET dikonfigurasi untuk beroperasi dalam mode Terintegrasi baru secara default. Ini memungkinkan aplikasi Anda memanfaatkan peningkatan mode Terintegrasi dengan modifikasi minimal.
Karena penyatuan konfigurasi, beberapa aplikasi mungkin memerlukan migrasi untuk beroperasi dengan benar dalam mode Terintegrasi. Secara default, server menyediakan bantuan dengan migrasi. Ini mendeteksi aplikasi yang memerlukan migrasi, dan mengembalikan pesan kesalahan yang meminta Anda memigrasikan aplikasi.
Konfigurasi berikut menyebabkan kesalahan migrasi:
- File Web.config aplikasi menentukan <konfigurasi httpModules> .
Aplikasi memuat modul ASP.NET baru atau menghapus modul yang sudah ada.
Dalam mode Terintegrasi, modul ASP.NET ditentukan dengan modul asli di bagian konfigurasi system.webServer>/<modules> terpadu<.
Modul ASP.NET yang ditentukan di <bagian konfigurasi system.web>/<httpModules> harus dipindahkan ke bagian konfigurasi baru untuk diterapkan. Selanjutnya, modul ASP.NET baru harus ditambahkan langsung ke bagian terpadu<modules>. - File Web.config aplikasi menentukan
<httpHandlers>konfigurasi.
Aplikasi ini menggunakan pemetaan handler kustom untuk beberapa jenis konten.
Dalam mode Terintegrasi, ASP.NET pemetaan handler harus ditentukan di bagian konfigurasi system.webServer/handlers> terpadu <agar< berlaku.> Selanjutnya, pemetaan handler ASP.NET baru harus ditambahkan langsung ke bagian terpadu<handlers>.
Bagian ini menggantikan konfigurasi ASP.NET<httpHandlers>dan konfigurasi peta skrip IIS, yang keduanya sebelumnya harus dikonfigurasi untuk menyiapkan pemetaan handler ASP.NET. - File Web.config aplikasi mendefinisikan <identitas impersonate="true" /> configuration.
Aplikasi ini meniru kredensial klien, yang paling umum dengan aplikasi intranet. Dalam mode Terintegrasi, peniruan klien tidak tersedia dalam beberapa tahap pemrosesan permintaan awal. Dalam sebagian besar kasus, ini bukan masalah dan Anda dapat menonaktifkan kesalahan migrasi. Jika tidak, Anda harus mengonfigurasi aplikasi ini untuk dijalankan dengan menggunakan mode ASP.NET Klasik.
Ketika kesalahan migrasi dihasilkan, umumnya dapat memigrasikan konfigurasi aplikasi (disarankan dalam kasus 1 dan 2, di atas), atau memindahkan aplikasi untuk menggunakan mode ASP.NET Klasik (jika 3).
Memigrasikan Konfigurasi Aplikasi
IIS memigrasikan aplikasi dengan menggunakan alat baris perintah AppCmd.exe untuk melakukan migrasi. Pesan kesalahan migrasi berisi perintah yang dijalankan di jendela baris perintah, yang harus Anda jalankan dengan hak pengguna administrator, untuk langsung memigrasikan aplikasi Anda ke mode Terintegrasi.
Format dasar perintah migrasi adalah sebagai berikut:
%windir%\system32\inetsrv\APPCMD.EXE migrate config <Application Path>
Di mana <Jalur> Aplikasi adalah jalur virtual aplikasi yang berisi nama situs, seperti "Situs Web Default/app1".
Ketika migrasi selesai, aplikasi Anda akan berjalan dalam mode Terintegrasi dan Klasik tanpa masalah.
Catatan
Jika Anda mengubah konfigurasi setelah migrasi, server tidak akan meminta Anda untuk bermigrasi lagi. Setelah migrasi awal, Anda harus memastikan bahwa konfigurasi Anda tetap sinkron di antara dua mode. Anda dapat memigrasikan aplikasi secara manual lagi dengan menggunakan alat baris perintah AppCmd.exe.
Kembali ke Mode Integrasi ASP.NET Klasik
Jika Anda lebih suka kembali ke mode ASP.NET Klasik, pindahkan aplikasi Anda ke kumpulan aplikasi yang dikonfigurasi untuk dijalankan dalam mode Klasik. Aplikasi lain terus berjalan dalam mode Terintegrasi baru berdampingan dengan aplikasi mode Klasik.
Untuk informasi selengkapnya tentang cara memindahkan aplikasi ke mode ASP.NET Klasik, lihat Mengubah Mode ASP.NET untuk Aplikasi.
Menonaktifkan Pesan Kesalahan Migrasi
Jika Anda telah memigrasikan konfigurasi secara manual atau ingin tetap dalam mode Terintegrasi tanpa memigrasikan konfigurasi Anda (tidak disarankan), Anda dapat menonaktifkan pesan kesalahan migrasi dengan menambahkan yang berikut ini ke file Web.config aplikasi:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
Catatan
Server secara otomatis menonaktifkan pesan kesalahan setelah memigrasikan konfigurasi dengan alat baris perintah AppCmd.exe.
Jika Anda menonaktifkan pesan kesalahan migrasi secara manual, Anda harus memastikan bahwa aplikasi Anda berfungsi dengan baik dalam mode Terintegrasi, karena server tidak akan lagi memberikan peringatan tentang konfigurasi yang tidak didukung.
Mengubah Mode ASP.NET untuk Aplikasi
Jika aplikasi Anda tidak berfungsi dengan baik dalam mode ASP.NET Terintegrasi, Anda dapat memindahkannya ke mode ASP.NET Klasik dengan memindahkannya ke kumpulan aplikasi lain. Setiap kumpulan aplikasi dikonfigurasi secara individual untuk menggunakan mode integrasi ASP.NET yang diinginkan. Ini memungkinkan Anda menjalankan grup aplikasi yang menggunakan mode integrasi ASP.NET yang berbeda secara berdampingan di server yang sama.
Untuk mengubah mode integrasi ASP.NET untuk aplikasi:
- Temukan atau buat kumpulan aplikasi yang dikonfigurasi untuk menggunakan mode yang diinginkan.
Secara default, semua kumpulan aplikasi baru berjalan dalam mode Terintegrasi.
Pengaturan ASP.NET menyediakan kumpulan aplikasi bernama "Classic .NET AppPool" yang berjalan dalam mode integrasi ASP.NET klasik. Anda dapat menggunakan kumpulan aplikasi ini untuk aplikasi yang seharusnya tidak berjalan dalam mode Terintegrasi.
Anda juga dapat mengubah mode ASP.NET kumpulan aplikasi yang ada dengan menggunakan Alat Administrasi IIS atau alat baris perintah AppCmd.exe, atau dengan mengedit konfigurasi kumpulan aplikasi secara manual. - Atur aplikasi untuk menggunakan kumpulan aplikasi tersebut.
Setiap aplikasi dikonfigurasi untuk menggunakan kumpulan aplikasi tertentu. Secara default, semua aplikasi menggunakan kumpulan aplikasi default bernama "DefaultAppPool", yang berjalan dalam mode Terintegrasi.
Anda dapat mengubah kumpulan aplikasi aplikasi dengan menggunakan Alat Administrasi IIS atau alat baris perintah AppCmd.exe, atau dengan mengedit konfigurasi aplikasi secara manual.
Memilih Versi ASP.NET untuk Aplikasi
Secara historis, IIS telah mendukung beberapa versi ASP.NET /CLR secara berdampingan. Misalnya, IIS memungkinkan server yang sama untuk menjalankan aplikasi ASP.NET dengan menggunakan .NET Framework v1.1 dan v2.0. Dukungan ini diberikan dengan memetakan versi ASPNET_isapi.dll yang sesuai untuk melayani permintaan konten ASP.NET dengan menggunakan konfigurasi peta skrip IIS.
Misalnya, Anda dapat menggunakan konfigurasi peta skrip berikut untuk mengaktifkan dukungan berdampingan:
- ASP.NET aplikasi v1.1 di /app1:
*.aspx -> d:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll - ASP.NET aplikasi v2.0 di /app2:
*.aspx -> d:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
Ketika aplikasi menerima permintaan *.aspx, IIS memuat aspnet_isapi.dll yang ditentukan, yang memuat versi CLR yang benar ke dalam proses pekerja, dan memproses permintaan.
ASP.NET juga menyediakan cara berikut untuk mengonfigurasi peta skrip berdampingan:
- ASP.NET ekstensi MMC. Saat Anda memilih versi ASP.NET untuk digunakan, ekstensi secara otomatis mengonfigurasi peta skrip agar aplikasi menunjuk ke versi aspnet_isapi.dll yang benar.
- ASP.NET aspnet_regiis.exe. Gunakan opsi –i dan –r untuk menginstal peta skrip yang menunjuk ke versi ASP.NET yang sesuai.
Sayangnya, karena keterbatasan kemampuan untuk memuat hanya satu versi CLR ke dalam satu proses pekerja, Anda harus memastikan bahwa dua aplikasi yang menggunakan versi ASP.NET yang berbeda tidak pernah dikonfigurasi untuk berada dalam kumpulan aplikasi yang sama. Ketika kesalahan umum ini dibuat, permintaan pertama memuat CLR dari aspnet_isapi.dll yang sesuai, dan permintaan berikutnya ke versi lain dalam kumpulan aplikasi yang sama akan gagal.
IIS mengenali bahwa kumpulan aplikasi adalah versi ASP.NET yang Anda pilih untuk menjalankan aplikasi. Dengan demikian, versi CLR / ASP.NET yang dimuat di kumpulan aplikasi secara eksplisit dikonfigurasi dalam konfigurasi kumpulan aplikasi. Secara default, IIS telah memuat clr yang ditentukan oleh pengaturan ini saat memuat proses pekerja (kecuali versi dikonfigurasi agar kosong).
Karena kumpulan aplikasi adalah batas penerapan versi .NET Framework, Anda dapat mengubah versi aplikasi ASP.NET dengan melakukan hal berikut:
- Pindahkan aplikasi ke kumpulan aplikasi yang menggunakan versi ASP.NET yang diinginkan.
Secara default, aplikasi menggunakan kumpulan aplikasi default bernama "DefaultAppPool," yang berjalan ASP.NET v2.1 dalam mode Terintegrasi. Pindahkan aplikasi ke "Classic .NET AppPool" untuk dijalankan dalam mode Klasik ASP.NET v2.1, atau kumpulan aplikasi lain pilihan Anda. - Konfigurasikan kumpulan aplikasi tempat aplikasi berjalan untuk menggunakan versi ASP.NET yang diinginkan.
Secara default, semua kumpulan aplikasi baru dikonfigurasi untuk menjalankan ASP.NET v2.1 dalam mode Terintegrasi.
Catatan
Jangan gunakan opsi aspnet_regiis /i atau /r untuk mengonfigurasi versi ASP.NET untuk aplikasi tertentu, atau secara global.
IIS menggunakan pemetaan handler pra-kondisi untuk secara otomatis memilih set pemetaan handler yang benar (untuk ASPNET_isapi.dll dalam mode Klasik atau langsung ke jenis handler terkelola dalam mode Terintegrasi) tergantung pada versi CLR yang dikonfigurasi dan mode integrasi terkelola dari kumpulan aplikasi. Penyiapan ASP.NET 2.0 menginstal pemetaan handler ini di tingkat server.
Memanfaatkan Mode ASP.NET Terintegrasi
Di IIS, aplikasi ASP.NET berjalan dalam mode Terintegrasi secara default. Namun, untuk memanfaatkan manfaat yang disediakan oleh integrasi yang lebih ketat, Anda harus melakukan beberapa modifikasi pada konfigurasi aplikasi. Anda juga dapat mengembangkan komponen ASP.NET baru yang memanfaatkan mode Terintegrasi untuk menyediakan fungsionalitas yang kuat untuk aplikasi Anda.
Mengaktifkan Layanan ASP.NET untuk Semua Jenis Konten
Dalam mode Terintegrasi, layanan yang disediakan oleh modul ASP.NET tersedia untuk permintaan semua jenis konten. Namun, secara default, modul ASP.NET dikonfigurasi untuk dijalankan hanya untuk permintaan ASP.NET konten untuk kompatibilitas mundur.
Untuk melakukan ini, lampirkan prasyarat managedHandler ke setiap modul ASP.NET di bagian konfigurasi di tingkat server:
<modules>
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule"
preCondition="managedHandler" />
<add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule"
preCondition="managedHandler" />
...
</modules>
Prasyarat adalah aturan yang dievaluasi server pada setiap permintaan untuk menentukan apakah modul akan dijalankan. Prasyarat managedHandler hanya berlaku untuk permintaan ke jenis konten yang dipetakan ke penangan ASP.NET.
Untuk menerapkan fungsionalitas yang disediakan oleh modul ASP.NET ke semua permintaan, hapus entri modul, lalu tambahkan kembali tanpa prasyarat dalam file Web.config root aplikasi.
Untuk mengaktifkan autentikasi formulir ASP.NET untuk seluruh aplikasi, ubah file Web.config Anda sebagai berikut:
<modules>
<remove name="FormsAuthentication" />
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" />
…
</modules>
Dengan perubahan ini, modul FormsAuthentication dijalankan untuk semua permintaan dalam aplikasi Anda. Ini memungkinkan Anda melindungi semua konten aplikasi dengan autentikasi Formulir. Untuk informasi selengkapnya tentang cara memanfaatkan mode Terintegrasi untuk menyediakan autentikasi Formulir untuk semua konten aplikasi, lihat Memanfaatkan panduan Mode Alur Terintegrasi.
Anda juga dapat menggunakan pintasan untuk mengaktifkan semua modul terkelola (ASP.NET) untuk berjalan untuk semua permintaan dalam aplikasi Anda, terlepas dari prasyarat "managedHandler". Untuk mengaktifkan semua modul terkelola agar berjalan untuk semua permintaan tanpa mengonfigurasi setiap entri modul untuk menghapus prasyarat "managedHandler", gunakan properti runAllManagedModulesForAllRequests di bagian <modules> :
<modules runAllManagedModulesForAllRequests="true" />
Ketika Anda menggunakan ini, prasyarat "managedHandler" tidak berpengaruh dan semua modul terkelola akan berjalan untuk semua permintaan.
Bereksperimenlah dengan mengaktifkan modul ASP.NET lainnya untuk diterapkan ke seluruh aplikasi Anda. Misalnya, gunakan modul ASP.NET Output Cache untuk menghasilkan halaman ASP cache, atau gunakan Otorisasi URL dan Manajer Peran untuk mengonfigurasi aturan kontrol akses untuk foto Anda. Atau, kembangkan modul Anda sendiri untuk membawa kekuatan ASP.NET ke seluruh situs Web Anda.
Membangun Layanan ASP.NET yang Lebih Kuat
Dalam mode Terintegrasi, modul ASP.NET menerapkan layanan mereka ke semua konten. Selain itu, karena modul ASP.NET dijalankan dalam alur pemrosesan permintaan terpadu dalam mode Terintegrasi, modul berlangganan ke tahap pemrosesan permintaan yang sama dan melakukan tugas yang sama dengan modul server asli. Pada saat yang sama, API ASP.NET sebagian besar tetap sama, dengan beberapa penambahan utama yang membuka fungsionalitas yang sebelumnya tidak tersedia.
Keakuratan Runtime
Dalam mode Terintegrasi, ASP.NET tahap pemrosesan permintaan yang diekspos ke modul terhubung langsung ke tahap yang sesuai dari alur IIS. Alur lengkap berisi tahapan berikut, yang diekspos sebagai peristiwa HttpApplication di ASP.NET:
- BeginRequest. Pemrosesan permintaan dimulai.
- AuthenticateRequest. Permintaan diautentikasi. Modul autentikasi IIS dan ASP.NET berlangganan tahap ini untuk melakukan autentikasi.
- PostAuthenticateRequest.
- AuthorizeRequest. Permintaan diotorisasi. Modul otorisasi IIS dan ASP.NET memeriksa apakah pengguna yang diautentikasi memiliki akses ke sumber daya yang diminta.
- PostAuthorizeRequest.
- ResolveRequestCache. Modul cache memeriksa apakah respons terhadap permintaan ini ada di cache, dan mengembalikannya alih-alih melanjutkan dengan jalur eksekusi lainnya. Fitur Cache Output dan Cache Output IIS ASP.NET dijalankan.
- PostResolveRequestCache.
- MapRequestHandler. Tahap ini bersifat internal dalam ASP.NET dan digunakan untuk menentukan penangan permintaan.
- PostMapRequestHandler.
- AcquireRequestState. Status yang diperlukan untuk eksekusi permintaan diambil. ASP.NET modul Status Sesi dan Profil mendapatkan datanya.
- PostAcquireRequestState.
- PreExecuteRequestHandler. Tugas apa pun sebelum eksekusi handler dilakukan.
- ExecuteRequestHandler. Handler permintaan dijalankan. Halaman ASPX, halaman ASP, program CGI, dan file statis dilayani.
- PostExecuteRequestHandler
- ReleaseRequestState. Perubahan status permintaan disimpan, dan status dibersihkan di sini. ASP.NET Modul Status Sesi dan Profil menggunakan tahap ini untuk pembersihan.
- PostReleaseRequestState.
- UpdateRequestCache. Respons disimpan dalam cache untuk digunakan di masa mendatang. Modul ASP.NET Output Cache dan IIS Output Cache dijalankan untuk menyimpan respons ke cache mereka.
- PostUpdateRequestCache.
- LogRequest. Tahap ini mencatat hasil permintaan, dan dijamin akan dijalankan meskipun terjadi kesalahan.
- PostLogRequest.
- EndRequest. Tahap ini melakukan pembersihan permintaan akhir, dan dijamin akan dijalankan meskipun terjadi kesalahan.
Dengan menggunakan API ASP.NET yang akrab, kemampuan untuk mengeksekusi dalam tahap yang sama dengan modul IIS membuat tugas yang sebelumnya hanya dapat diakses dalam filter dan ekstensi ISAPI asli sekarang dimungkinkan dalam kode terkelola.
Misalnya, Anda sekarang dapat menulis modul yang melakukan hal berikut:
- Mencegat permintaan sebelum pemrosesan terjadi, misalnya menulis ulang URL atau melakukan pemfilteran keamanan.
- Ganti mode autentikasi bawaan.
- Ubah konten permintaan masuk, seperti header permintaan.
- Memfilter respons keluar untuk semua tipe konten.
Lihat Mengembangkan Modul IIS 7 dan Di Atas dengan .NET untuk contoh yang baik tentang cara memperluas IIS dengan modul autentikasi ASP.NET kustom.
API ASP.NET yang diperluas
API ASP.NET tetap kompatibel mundur dengan rilis sebelumnya, yang memungkinkan modul yang ada untuk bekerja di IIS 7 ke atas tanpa modifikasi, dan untuk diterapkan ke semua konten aplikasi tanpa perubahan kode.
Namun, modul yang ditulis untuk mode Terintegrasi IIS dapat memanfaatkan beberapa API tambahan untuk mengaktifkan skenario pemrosesan permintaan utama yang sebelumnya tidak tersedia.
Koleksi HttpResponse.Headers baru memungkinkan modul untuk memeriksa dan memanipulasi header respons yang dihasilkan komponen aplikasi lain. Misalnya, Anda dapat mengubah header Tipe Konten yang dihasilkan oleh halaman ASP untuk meminta kotak dialog unduhan di browser. Koleksi Cookie pada kelas HttpResponse juga ditingkatkan untuk memungkinkan modifikasi cookie yang dihasilkan sebagai bagian dari pemrosesan permintaan, bahkan jika dibuat di luar ASP.NET.
Koleksi HttpRequest.Headers diaktifkan untuk penulisan, yang memungkinkan modul untuk memanipulasi header permintaan masuk. Gunakan ini untuk mengubah perilaku komponen server lain - misalnya, Anda dapat memaksa aplikasi yang dilokalkan untuk merespons klien dalam bahasa yang berbeda dengan mengubah nilai header Accept-Language secara dinamis.
Akhirnya, koleksi HttpRequest.ServerVariables sekarang dapat ditulis, yang memungkinkan variabel server IIS diatur. ASP.NET modul menggunakan fungsionalitas ini untuk mengubah nilai yang disediakan oleh IIS, dan untuk membuat variabel server baru yang terlihat oleh kerangka kerja aplikasi lain, seperti PHP.
Integrasi Runtime
Selain API baru, Mode terintegrasi memungkinkan fungsionalitas ASP.NET yang ada untuk memberikan nilai lebih bagi aplikasi Anda.
Fasilitas pelacakan yang disediakan oleh ASP.NET, termasuk kelas System.Diagnostics.Trace dan fitur pelacakan halaman ASP.NET, sekarang memancarkan informasi pelacakan ke dalam sistem pelacakan IIS. Ini memungkinkan informasi pelacakan yang dihasilkan selama pemrosesan permintaan oleh komponen IIS dan ASP.NET ditempatkan dalam satu file log, memfasilitasi diagnostik masalah server yang lebih baik.
Fitur pemfilteran respons ASP.NET, yang memungkinkan respons diubah dengan menggunakan antarmuka Stream sebelum masuk ke klien, ditingkatkan untuk memungkinkan pemfilteran konten non-ASP.NET. Oleh karena itu, Anda dapat menggunakan pemfilteran ASP.NET pada semua konten server, atau secara selektif menginstal filter hanya untuk permintaan ke konten yang ingin Anda proses. Dengan kemampuan ini, Anda dapat menulis fitur pemfilteran yang menyuntikkan atau menyensor konten tertentu dalam respons situs, terlepas dari apakah konten ini berasal dari halaman ASPX atau file statis.
Ringkasan
ASP.NET Integration di IIS 7 ke atas membuka potensi penuh ASP.NET, memungkinkan pengembang untuk membuat komponen server yang kuat dengan kemudahan dan kekayaan ASP.NET dan .NET Framework. Untuk mempelajari selengkapnya tentang cara memanfaatkan mode terintegrasi ASP.NET untuk aplikasi yang ada, lihat Memanfaatkan Mode Alur Terintegrasi. Untuk informasi tentang cara membangun komponen ASP.NET baru untuk memperluas server, lihat Mengembangkan Modul IIS 7 dan Di Atas dengan .NET.

