Mengelakkan System.Threading.ThreadAbortException dengan Response.Redirect
Menggunakan Response.Redirect(...)
untuk ubah hala halaman kadangkala boleh mencetuskan System.Threading.ThreadAbortException
. Ini berlaku kerana pelayan web secara tiba-tiba menghentikan pemprosesan halaman selepas ubah hala.
Parameter endResponse
dalam Response.Redirect
mengawal cara pelaksanaan halaman semasa berakhir. Menetapkan endResponse
kepada true
(lalai) menamatkan halaman serta-merta, yang boleh menyebabkan kehilangan data dan pemprosesan yang tidak cekap. Menetapkannya kepada false
menghalang pengecualian tetapi membenarkan halaman terus berjalan tanpa perlu.
Penyelesaian terbaik ialah menggunakan Response.Redirect(url, false)
diikuti dengan Context.ApplicationInstance.CompleteRequest()
. Ini segera memindahkan saluran paip IIS ke fasa EndRequest
, menghentikan pelaksanaan halaman semasa dengan bersih.
Untuk pemahaman yang lebih mendalam dan nasihat lanjut, termasuk pengendalian ubah hala dalam Application_Error
pengendali, lihat catatan blog berwawasan Thomas Marquardt tentang topik ini.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelak Sistem.Threading.ThreadAbortException dalam Response.Redirect()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!