C# 错误:无法计算表达式,因为代码已优化
我的asp.net应用程序中出现一个错误,内容为 “无法计算表达式,因为代码已优化或本机框架位于调用堆栈顶部。”C# 错误:无法计算表达式,因为代码已优化,c#,asp.net,master-pages,server.transfer,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(
protected void btnCustomerProfile_Click(object sender, EventArgs e)
{
try
{
Server.Transfer("CustomerProfile.aspx");
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
finally
{ }
}
using System.Threading.ThreadAbortException;
catch(ThreadAbortException ex)
{
throw;
}
经过搜索,我发现大多数类似的帖子都涉及response.redirect。我的代码使用server.transfer,我的应用程序也使用母版页
我如何解决这个问题
更新:由于某种原因,在我使用响应时发生此错误。同时重定向。很遗憾,我无法使用Server.Execute,因为Server.Execute会在接近尾声时调用调用页。您描述的问题似乎是出于设计,如下所示:
使用
Server.Execute
应该可以解决问题您是否尝试过用response.redirect()替换服务器.transfer
您将得到一个错误,但下面的代码块将捕获它,您可以继续生活
试试这个:
protected void btnCustomerProfile_Click(object sender, EventArgs e)
{
try
{
Server.Transfer("CustomerProfile.aspx");
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
finally
{ }
}
using System.Threading.ThreadAbortException;
catch(ThreadAbortException ex)
{
throw;
}
当我使用MS Test测试多线程应用程序时,我遇到了这个问题
我发现这是因为测试主线程结束并初始化了对象清理,而其他创建的线程(打算无限运行)仍在工作
当teat clean up方法杀死对象时,这些线程被中止,并显示上述消息。您能发布引发异常的代码段吗?嗯。。。在我的例子中,问题是由Response.End
引起的。。。但是查看您的代码很难说出这个问题的原因…链接上的信息表明.NET1.0和1.1框架。我使用的是4.0框架。我认为这个问题会在8年后得到解决。@DotNetRookie微软没有解决它的问题,只是将它们标记为“已知问题”…)server.execute的问题是它返回到调用页面。因为我现在有做server.transfer的代码,我想看看我是否能坚持同样的编码策略。生成的异常是否为ThreadAbortException?还有一个内部异常消息,可能值得将异常写入日志文件,以确保调试器没有格式化消息应用程序当前有使用server.transfer的代码(代码由不再在此的开发人员完成),因此我需要与当前体系结构保持一致。