File Global.asax, terkadang disebut file aplikasi ASP.NET, menyediakan lokasi pusat untuk merespons peristiwa tingkat aplikasi atau tingkat modul. Anda dapat menggunakan file ini untuk menerapkan keamanan aplikasi dan tugas lainnya.
File Global.asax dikonfigurasi sehingga permintaan HTTP langsung apa pun (melalui URL) ditolak secara otomatis, sehingga pengguna tidak dapat mengunduh atau melihat isinya. Kerangka halaman ASP.NET secara otomatis mengenali setiap perubahan yang dilakukan pada file Global.asax. Kerangka halaman ASP.NET memulai ulang aplikasi setelah Global.asax diubah, yang mencakup menutup semua sesi browser, menghapus semua informasi status, dan memulai ulang domain aplikasi.
File Global.asax mewarisi dari kelas HttpApplication, yang memelihara kumpulan objek HttpApplication dan mengalokasikan objek dalam kumpulan ke aplikasi bila diperlukan. File Global.asax berisi peristiwa berikut:
· Application_Init: Peristiwa ini dipicu ketika aplikasi dipakai atau dipanggil untuk pertama kalinya. Ini akan dipanggil untuk semua instance objek HttpApplication.
· Application_Dispose: Dipicu sebelum aplikasi dimusnahkan. Ini adalah tempat yang ideal untuk membersihkan sumber daya yang digunakan sebelumnya.
· Application_Error: Peristiwa ini dipicu ketika ditemukan pengecualian yang tidak tertangani dalam aplikasi.
· Application_Start: Event ini dipicu ketika instance pertama dari kelas HttpApplication dibuat. Ini memungkinkan Anda membuat objek yang dapat diakses oleh semua instance HttpApplication.
· Application_End: Peristiwa ini dipicu ketika instance terakhir dari kelas HttpApplication dimusnahkan. Hal ini dipicu hanya sekali selama masa aplikasi.
· Application_BeginRequest: Dipicu ketika permintaan aplikasi diterima. Untuk sebuah permintaan, ini adalah peristiwa pertama yang dipicu. Permintaan tersebut biasanya berupa permintaan halaman (URL) yang dimasukkan oleh pengguna.
· Application_EndRequest: Event terakhir yang diminta oleh aplikasi.
· Application_PreRequestHandlerExecute: Peristiwa ini dipicu sebelum kerangka halaman ASP.NET mulai mengeksekusi pengendali peristiwa seperti halaman atau layanan Web.
· Application_PostRequestHandlerExecute: Peristiwa ini dipicu ketika kerangka halaman ASP.NET berakhir mengeksekusi pengendali peristiwa.
· Applcation_PreSendRequestHeaders: Peristiwa ini dipicu ketika kerangka halaman ASP.NET mengirimkan header HTTP ke klien yang meminta (browser).
· Application_PreSendContent: Peristiwa ini dipicu ketika kerangka halaman ASP.NET mengirimkan konten ke klien yang meminta (browser).
· Application_AcquireRequestState: Peristiwa ini dipicu ketika kerangka halaman ASP.NET mendapatkan status saat ini (status sesi) yang terkait dengan permintaan saat ini.
· Application_ReleaseRequestState: Peristiwa ini dipicu ketika kerangka halaman ASP.NET telah selesai mengeksekusi semua pengendali peristiwa. Ini akan menyebabkan semua modul status menyimpan data statusnya saat ini.
· Application_ResolveRequestCache: Peristiwa ini dipicu ketika kerangka halaman ASP.NET menyelesaikan permintaan otorisasi. Hal ini memungkinkan modul cache untuk melayani permintaan dari cache, sehingga melewati eksekusi event handler.
· Application_UpdateRequestCache: Peristiwa ini dipicu ketika kerangka halaman ASP.NET menyelesaikan eksekusi pengendali peristiwa, memungkinkan modul cache menyimpan data respons untuk digunakan dalam menanggapi permintaan berikutnya.
· Application_AuthenticateRequest: Peristiwa ini dipicu ketika modul keamanan menetapkan identitas yang valid untuk pengguna saat ini. Saat ini, kredensial pengguna akan diverifikasi.
· Application_AuthorizeRequest: Peristiwa ini dipicu ketika modul keamanan mengonfirmasi bahwa pengguna dapat mengakses sumber daya.
· Session_Start: Peristiwa ini dipicu ketika pengguna baru mengakses situs Web aplikasi.
· Session_End: Peristiwa ini dipicu ketika sesi pengguna habis, berakhir, atau ketika mereka meninggalkan situs Web aplikasi.
Masalah utama dalam menggunakan peristiwa ini adalah mengetahui urutan pengaktifan peristiwa tersebut. Peristiwa Application_Init dan Application_Start diaktifkan satu kali saat aplikasi pertama kali dimulai. Demikian pula, peristiwa Application_Dispose dan Application_End diaktifkan satu kali ketika aplikasi dihentikan. Selain itu, peristiwa berbasis sesi (Session_Start dan Session_End) hanya digunakan saat pengguna masuk dan keluar situs. Peristiwa yang tersisa menangani permintaan aplikasi. Urutan pemicuan peristiwa ini adalah:
· Application_BeginRequest
· Application_AuthenticateRequest
· Application_AuthorizeRequest
· Application_ResolveRequestCache
· Application_AcquireRequestState
· Application_PreRequestHandlerExecute
· Application_PreSendRequestHeaders
· Application_PreSendRequestContent
· <<Kode Eksekusi>>
· Application_PostRequestHandlerExecute
· Application_ReleaseRequest
Status· Application_UpdateRequestCache
· Application_EndRequest
kejadian ini Sering digunakan untuk tujuan keamanan. Contoh C# berikut menunjukkan peristiwa Global.asax yang berbeda, menggunakan peristiwa Application_Authenticate untuk menyelesaikan otentikasi berbasis formulir melalui cookie. Selain itu, acara Application_Start mengisi variabel aplikasi, dan Session_Start mengisi variabel sesi. Acara Application_Error menampilkan pesan sederhana yang menjelaskan kesalahan yang terjadi.
protected void Application_Start(Pengirim objek, EventArgs e) {
Aplikasi["Judul"] = "Contoh Builder.com";
}
protected void Session_Start(Pengirim objek, EventArgs e) {
Sesi["startValue"] = 0;
}
protected void Application_AuthenticateRequest(Pengirim objek, EventArgs e) {
//Ekstrak cookie otentikasi formulir
string cookieName = FormsAuthentication.FormsCookieName;
HttpCookie authCookie = Konteks.Permintaan.Cookie[cookieName];
if(null == authCookie) {
// Tidak ada cookie autentikasi.
kembali;
}
FormsAuthenticationTicket authTicket = null;
mencoba {
authTicket = FormsAuthentication.Decrypt(authCookie.Value);
} catch(Pengecualian misalnya) {
// Detail pengecualian log (dihilangkan demi kesederhanaan)
kembali;
}
if (null == authTicket) {
// Cookie gagal didekripsi.
kembali;
}
// Saat tiket dibuat, properti UserData telah ditetapkan
// rangkaian nama peran yang dibatasi pipa.
string[2] peran
peran[0] = "Satu"
peran[1] = "Dua"
// Membuat objek Identitas
FormsIdentity id = FormsIdentity baru( authTicket );
// Prinsipal ini akan mengalir sepanjang permintaan.
Kepala Sekolah GenericPrincipal = Kepala Sekolah Generic baru(id, peran);
// Lampirkan objek utama baru ke objek HttpContext saat ini
Konteks.Pengguna = kepala sekolah;
}
protected void Application_Error(Pengirim objek, EventArgs e) {
Response.Write("Terdapat kesalahan.");
}
http://www.cnblogs.com/niit007/archive/2006/08/13/475565.html