h1

Mengatasi “Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack” di ASP.NET

17 Februari 2011

Hal yang menggangu saya adalah kenapa beberapa kali muncul pesan kesalahan “Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack” ketika melakukan debug dengan menggunakan VS 2008.

Hal ini pada umumnya terjadi pada block try-catch dimana di dalam nya terdapat perintah Response.Redirect, Server.Transfer dan Response.End. Setelah mencari dari internet, berikut adalah pemecahan masalah yang saya dapat dari sini

Intinya karena perintah Response.End akan membuat baris setelahnya tidak di ekseskusi dan berganti ke event Application_EndRequest di application’s event pipeline. (Detail dari event ini saya masih belum paham).

Nah masalahnya adalah kebetulan perintah Response.Redirect dan Server.Transfer secara implisit akan memanggil method Response.End. Dengan demikian maka baris setelah Response.Redirect dan Server.Transfer tidak akan di eksekusi. Hal ini membuat baris setelahnya tidak dapat di debug dan memunculkan pesan kesalahan seperti di atas.

Pertanyaannya : kenapa kalau tidak di eksekusi tapi ada pesan kesalahan? Tidak langsung di loncati saja ? Ini masih menjadi PEER

Cara untuk mengatasinya adalah :

  1. Tambahkan parameter pada method Response.Redirect dengan false pada parameter kedua. Contoh : Respose.Redirect(string url, bool endResponse); Parameter endResponse menunjukkan kondisi melakukan pemanggilan ke method Response.End. Apabila kita set false, berarti method Response.End tidak akan di panggil
  2. Untuk Response.End panggil method HttpContext.Current.ApplicationInstance.CompleteRequest yang mem-bypas event Application_EndRequest
  3. Apabila menggunakakan Server.Transfer, ganti dengan method Server.Execute.

Cara ini berhasil untuk saya, semoga membantu pembaca sekalian.

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: