错误:无法评估表达式,因为代码已优化

时间:2012-06-11 15:16:49

标签: c# asp.net master-pages server.transfer

我的asp.net应用程序中出现错误,显示为

“无法评估表达式,因为代码已优化或本机框架位于调用堆栈之上。”

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

搜索SO后,我发现大多数类似帖子都涉及response.redirect。我的代码使用的是server.transfer,我的应用程序也在使用母版页。

如何解决此问题?

更新:由于某种原因,发生此错误的原因是我也使用了Response.Redirect。不幸的是我无法使用Server.Execute,因为Server.Execute会在最后调用调用页面。

4 个答案:

答案 0 :(得分:13)

你会收到一个错误,但下面的代码块会陷入错误,你可以继续生活。

试试这个:

using System.Threading.ThreadAbortException;

catch(ThreadAbortException ex)
{
    throw;
}

答案 1 :(得分:10)

您描述的问题似乎是设计如下所示:

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

使用Server.Execute可以解决问题

答案 2 :(得分:2)

您是否尝试将server.transfer替换为response.redirect()

Server.Transfer VS Response.Redirect

答案 3 :(得分:2)

当我使用MS-Test测试多线程应用程序的工作时,我遇到了这个消息。

我发现原因是因为测试主线程已经结束并初始化了对象的清理,而其他创建的无限运行线程仍在工作。

由于乳头清理方法会杀死对象,这些线程将被中止,显示上述信息。