12

我的 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,我的应用程序也正在使用 Master Pages。

我该如何解决这个问题?

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

4

4 回答 4

13

你会得到一个错误,但下面的代码块会捕获它,你可以继续你的生活。

尝试这个:

using System.Threading.ThreadAbortException;

catch(ThreadAbortException ex)
{
    throw;
}
于 2012-06-21T01:46:16.793 回答
10

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

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

使用Server.Execute应该可以解决问题

于 2012-06-11T15:32:06.043 回答
2

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

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

当乳头清理方法杀死对象时,这些线程被中止并显示上述消息。

于 2014-12-18T10:49:17.377 回答
2

您是否尝试过用server.transfer替换response.redirect()

Server.Transfer VS Response.Redirect

于 2012-06-11T15:38:30.460 回答