Error: Unable to evaluate expression because the code is optimized
Asked Answered
P

4

12

I am getting an error in my asp.net app that reads

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

protected void btnCustomerProfile_Click(object sender, EventArgs e)
{
    try
    {
        Server.Transfer("CustomerProfile.aspx");
    }
    catch (Exception ex)
    {
        Response.Write(ex.ToString());
    }
    finally
    { }
}

After searching SO, I see most of the similar posts involve response.redirect. My code is using server.transfer and my application is also using Master Pages.

How can I resolve this issue?

Update: For some reason, this error occurs is I use Response.Redirect as well. Unfortunately I cannot use Server.Execute, because Server.Execute calls the calling page towards the end.

Pentaprism answered 11/6, 2012 at 15:16 Comment(2)
can you post the piece of code that throws the exception?Petersham
uhmm... in my case the problem was caused by Response.End... But looking at your code is very difficult to say what's the cause of this issue...Petersham
H
13

You will get an error, but the code block below will trap it and you can get on with your life.

Try this:

using System.Threading.ThreadAbortException;

catch(ThreadAbortException ex)
{
    throw;
}
Hercules answered 21/6, 2012 at 1:46 Comment(0)
E
10

The issue you describe seems to be by design as shown here:

http://support.microsoft.com/kb/312629/EN-US/

Using Server.Execute should solve the problem

Endear answered 11/6, 2012 at 15:32 Comment(4)
The information on your link indicates .net 1.0 & 1.1 framework. I am using 4.0 framework. I would think this issue would be resolved 8 years later.Pentaprism
@DotNetRookie Microsoft doesn't solve its issues, only mark them as "known issues"... :)Petersham
The issue with server.execute is that it goes back to the calling page. Since I currently have code that does server.transfer I want to see if I can stick with that same coding strategy. techahead.wordpress.com/2007/10/14/…Pentaprism
Is the exception generated a ThreadAbortException? Also is there an inner exception message, might be worth writing out the exception to a log file to make sure that the debugger isn't formatting the messageEndear
S
2

Have you tried replacing the server.transfer with response.redirect()?

Server.Transfer VS Response.Redirect

Sammer answered 11/6, 2012 at 15:38 Comment(1)
The application currently has code that uses server.transfer (code was done by a developer who is no longer here), so I need to stay consistent with the current architecture.Pentaprism
C
2

I faced this message when I was testing working of multi-threading application using MS-Test.

I found the reason for this was because the testing main thread got ended and initialized cleaning of objects while other created threads which are meant to run infinitely were still working.

As teat clean up method kills objects these threads gets aborted showing above message.

Crystallography answered 18/12, 2014 at 10:49 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.