Pengalihan Http 302

Saya mencoba membuat Pengalihan HTTP 302, tetapi mendapatkan pengecualian berikut saat saya menjalankan dalam mode debug.

Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack

var response = HttpContext.Current.Response; 
response.Clear(); 
response.Status = "302 Found";
response.AddHeader("Location", "http://google.com"); 
response.End();
response.Flush();

Singkat cerita, panggilan ini tidak menghilangkan respons dan tidak mengalihkan.

Bagaimana saya bisa membuat ini berfungsi?


person DarthVader    schedule 29.08.2011    source sumber
comment
Apakah Anda mengkompilasi aplikasi Anda dalam mode debug dan berjalan seperti itu atau Anda mengkompilasi aplikasi Anda dalam mode rilis dan hanya melampirkan debugger ke proses?   -  person Icarus    schedule 29.08.2011
comment
Lihat juga di sini automagical.rationalmind.net/2010/03/08/   -  person DmitryBoyko    schedule 27.09.2013


Jawaban (2)


Anda tidak boleh memanggil End dan Flush dengan cara ini - untuk mengalihkan dengan HTTP 302 Anda harus menggunakan HttpContext.Current.Response.Redirect lihat http://msdn.microsoft.com/en-us/library/a8wa7sdt.aspx

person Yahia    schedule 29.08.2011
comment
apakah itu pengalihan 302? itu berhasil untuk saya, tapi saya tidak yakin apakah itu 302 - person DarthVader; 29.08.2011

Objek HttpResponse memiliki metode untuk melakukan pengalihan 302.

Response.Redirect("page.aspx") 

Meskipun kode Anda akan berfungsi dengan baik karena itu adalah cara umum untuk mengimplementasikan 301 redirect.

Perhatikan bahwa response.Flush() berlebihan karena buffer respons disalurkan ke klien dan eksekusi akan berakhir pada response.End(), sehingga baris tersebut tidak akan dieksekusi.

Pencarian Google untuk orang lain dengan masalah serupa mengarah ke artikel KB ini http://support.microsoft.com/kb/312629/EN-US/ yang kemungkinan besar akan menjadi penyebab masalahmu.

person Chris Diver    schedule 29.08.2011
comment
apakah itu pengalihan 302? itu berhasil untuk saya, tapi saya tidak yakin apakah itu 302 - person DarthVader; 29.08.2011
comment
Ya, menurut dokumentasi, Anda dapat menggunakan sesuatu seperti firebug atau fiddler untuk memeriksanya. - person Chris Diver; 29.08.2011