猿问

为什么响应.重定向导致System.Thread.ThreadAbortException?

为什么响应.重定向导致System.Thread.ThreadAbortException?

当我使用Response.重定向(.)要将表单重定向到新页面,我将得到以下错误:

类型‘System.Threading.ThreadAbortException’的第一次机会异常发生在mcorlib.dll中。
类型‘System.Threading.ThreadAbortException’的异常发生在m336 lib.dll中,但未在用户代码中处理。

我对此的理解是,错误是由Web服务器中止调用response.redirected页面的其余部分引起的。

我知道我可以在Response.Redirect这叫做endResponse。如果我将endResponse设置为True,我仍然会得到错误,但如果我将其设置为false,则不会。我很确定,尽管这意味着Web服务器正在运行我重定向的页面的其余部分。至少可以说这是没有效率的。有更好的方法吗?其他的东西Response.Redirect或者,是否有一种方法可以强制旧页停止加载我无法获得ThreadAbortException?


猛跑小猪
浏览 271回答 3
3回答

拉丁的传说

正确的模式是使用endResponse=false调用重定向重载,并调用IIS管道,一旦返回控制,它应该直接进入EndRequest阶段:Response.Redirect(url, false);Context.ApplicationInstance.CompleteRequest();这篇博客文章ThomasMarquardt提供了其他详细信息,包括如何处理在Application_Error处理程序中重定向的特殊情况。
随时随地看视频慕课网APP
我要回答