Response.Redirect我的员工页面中有一个.它重定向到Salary页面.
Response.Redirect ("Salary.aspx");
Run Code Online (Sandbox Code Playgroud)
它工作正常,直到我添加异常处理如下.
try
{
Response.Redirect ("Salary.aspx");
}
catch(Exception ex)
{
//MyLog();
throw new Exception();
}
//Remaining code in event handler
Run Code Online (Sandbox Code Playgroud)
这引起了一个新的异常,说"线程正在被中止".我开始知道可以通过将endResponse重定向设置为false 来避免这种情况.
Response.Redirect(url, false);
Context.ApplicationInstance.CompleteRequest();
Run Code Online (Sandbox Code Playgroud)
新异常的解释:它总是抛出异常但由框架处理.因为我添加了一个try..catch它被捕到了(我正在抛出一个新的异常)
注意:CompleteRequest确实绕过了其他HTTP过滤器和模块,但它不会绕过当前页面生命周期中的其他事件
注意:Response.Redirect将此异常抛出到当前页面的结束处理.ASP .Net本身处理此异常并调用ResetAbort继续处理.
题
陷阱
false,则将执行eventhandler中的剩余代码.因此,我们需要if检查剩余的代码(检查:是否未满足重定向条件).参考