执行行:
Response.Redirect("Whateva.aspx", true);Run Code Online (Sandbox Code Playgroud)
结果是:
A first chance exception of type 'System.Threading.ThreadAbortException' occurred in mscorlib.dll An exception of type 'System.Threading.ThreadAbortException' occurred in mscorlib.dll but was not handled in user code
例外是由于"真实"部分,告诉它立即结束当前请求.
这应该是怎么回事?
如果我们考虑:
有没有其他方法来实现相同的目标?
我在这种情况下通常采用的一种方法是在响应期间不结束响应,而是立即使用return(或其他流控制)跟踪响应.像这样的东西:
Response.Redirect("Whateva.aspx", false);
return;
Run Code Online (Sandbox Code Playgroud)
当然,这取决于重定向在逻辑流程中发生的位置.但是你想要处理它很好.但是这个想法是,当你想要在重定向上结束响应时,那么通过a退出有问题的方法return并不是不可能的.
我看到人们常常采用一种方法来解决这个问题,不应该说这是应该避免的,但为了完整起见我还是会说出来(你永远不会知道谁可能会在以后通过Google偶然发现这个问题) ,等等,是捕捉和吞下例外:
try
{
Response.Redirect("Whateva.aspx", true);
}
catch (Exception ex)
{
// do nothing
}
Run Code Online (Sandbox Code Playgroud)
当然,出于多种原因,不应该这样做.正如我从你对异常的描述中推断的那样,你无疑已经知道这将是不好的做法.但是,正如我所说,在答案中值得注意这一事实.