Respons.Redirect and the System.Threading.ThreadAbortException: Panduan Komprehensif
Dalam pembangunan web ASP.NET, menggunakan Response.Redirect
untuk ubah hala halaman kadangkala boleh membawa kepada System.Threading.ThreadAbortException
yang digeruni. Pengecualian ini berlaku kerana pelayan web secara tiba-tiba berhenti memproses halaman semasa selepas ubah hala dimulakan.
Punca utama terletak pada sifat Response.Redirect
. Selepas pelaksanaan, ia menghentikan serta-merta sebarang pelaksanaan kod, pemaparan atau pengendalian acara pada halaman asal. Jika operasi tak segerak atau tugasan jangka panjang lain masih aktif, penamatan mendadak ini boleh mencetuskan ThreadAbortException
.
Semasa menggunakan Response.Redirect
beban berlebihan dengan endResponse
ditetapkan kepada false
membolehkan pelayan menyelesaikan pemprosesan halaman, pendekatan ini tidak cekap, membazir sumber selepas pengguna telah menavigasi pergi.
Penyelesaian yang lebih cekap melibatkan penggunaan endResponse = false
beban berlebihan dan kemudiannya memanggil Context.ApplicationInstance.CompleteRequest()
. Ini memberi isyarat kepada saluran paip IIS untuk melompat terus ke fasa EndRequest
, dengan segera menamatkan pemprosesan halaman tanpa pengecualian dan meminimumkan penggunaan sumber.
Untuk menyelam lebih mendalam ke dalam teknik lanjutan, termasuk amalan terbaik dan penyelesaian untuk senario seperti mengubah hala dalam pengendali Application_Error
, rujuk catatan blog yang dipautkan dalam respons asal oleh Thomas Marquardt (pautan tidak disediakan di sini kerana ia luaran). Sumber ini menawarkan pandangan yang tidak ternilai untuk mengendalikan kerumitan proses ubah hala dengan berkesan.
Atas ialah kandungan terperinci Mengapa Response.Redirect Kadang-kadang Membuang Sistem.Threading.ThreadAbortException, dan Bagaimana Saya Boleh Menghalangnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!