错误:无法计算表达式,因为代码已优化
本文关键字:因为 代码 优化 表达式 计算 错误 | 更新日期: 2023-09-27 18:36:53
我在 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,我的应用程序也使用母版页。
如何解决此问题?
更新:由于某种原因,发生此错误是我也使用响应重定向。不幸的是,我无法使用Server.Execute,因为Server.Execute在最后调用调用页面。
你会得到一个错误,但下面的代码块会困住它,你可以继续你的生活。
试试这个:
using System.Threading.ThreadAbortException;
catch(ThreadAbortException ex)
{
throw;
}
您描述的问题似乎是设计使然,如下所示:
http://support.microsoft.com/kb/312629/EN-US/
使用Server.Execute
应该解决问题
您是否尝试过用response.redirect()
替换server.transfer
?
服务器.传输 VS 响应.重定向
我在使用 MS-Test 测试多线程应用程序的工作时遇到了这条消息。
我发现这样做的原因是因为测试主线程结束并初始化了对象的清理,而其他创建的旨在无限运行的线程仍在工作。
当奶头清理方法杀死对象时,这些线程会中止,显示上面的消息。