当我使用 Response.Redirect(…) 将表单重定向到新页面时,出现错误:
mscorlib.dll 中出现“System.Threading.ThreadAbortException”类型的第一次机会异常 mscorlib.dll 中出现“System.Threading.ThreadAbortException”类型的异常,但未在用户代码中处理
我对此的理解是,错误是由网络服务器中止调用 response.redirect 的页面的其余部分引起的。
我知道我可以添加第二个参数Response.Redirect,称为 endResponse。如果我将 endResponse 设置为 True,我仍然会收到错误,但如果我将其设置为 False,那么我不会。我很确定这意味着网络服务器正在运行我重定向的页面的其余部分。至少可以说这似乎是低效的。有一个更好的方法吗?除了Response.Redirect或者有没有办法强制旧页面停止加载我不会得到的地方ThreadAbortException?
Response.Redirect
ThreadAbortException
正确的模式是使用 endResponse=false 调用 Redirect 重载,并调用以告诉 IIS 管道,一旦您返回控制权,它应该直接进入 EndRequest 阶段:
Response.Redirect(url, false); Context.ApplicationInstance.CompleteRequest();
Thomas Marquardt的这篇博客文章提供了更多详细信息,包括如何在 Application_Error 处理程序中处理重定向的特殊情况。