Asp.net ex={无法计算表达式,因为代码已优化或本机帧位于调用堆栈顶部。}

Asp.net ex={无法计算表达式,因为代码已优化或本机帧位于调用堆栈顶部。},asp.net,Asp.net,我理解,如果您将Response.Redirect放在try-catch中,您将得到此错误,除非您将重定向的第二个参数指定为false 但是,即使看了这篇文章(),我仍然不明白为什么我必须为这一行代码将其设置为false……在我将其包装在try-catch中之前,对于该参数,我们一直都是true: Response.Redirect(SecureUrl("Confirmation", SessionID), true); 我们想关闭它,因为这是该行的结尾..确认页。但是当这被包装在try-ca

我理解,如果您将Response.Redirect放在try-catch中,您将得到此错误,除非您将重定向的第二个参数指定为false

但是,即使看了这篇文章(),我仍然不明白为什么我必须为这一行代码将其设置为false……在我将其包装在try-catch中之前,对于该参数,我们一直都是true:

Response.Redirect(SecureUrl("Confirmation", SessionID), true);

我们想关闭它,因为这是该行的结尾..确认页。但是当这被包装在try-catch中时,我得到了这个错误。我只是想更好地理解为什么是假的。我读了这篇文章,它没有向我跳出来。

如果将
true
作为第二个参数传递,它将抛出
ThreadAbortException
以停止处理请求

ASP.Net内部的代码将捕获ThreadAbortException,调用Thread.ResetAbort,并发送(HTTP 301)响应

如果您有一个
catch
块,您还将看到
ThreadAbortException
,就像您看到任何其他异常一样

最好是在catch块之前为
ThreadAbortException
添加一个空catch块,如下所示:

} catch(ThreadAbortException) { throw; }