Response.Redirect没有结束执行

Cha*_*had 13 asp.net response.redirect

我有Default.aspx页面,它继承自BasePage.cs,它继承自System.Web.UI.Page.BasePage是我在加载时每页必须做的一些常见事情.

在BasePage中,假设我正在检查X.如果X = 1,那么我将立即重定向到我的"Discontinued.aspx"页面并停止执行BasePage.如果我发现X = 1,我说:

HttpContext.Current.Response.Redirect("Discontinued.aspx",true);

我希望重定向停止执行BasePage并立即跳出 - 因此上面语句中的"true" - 应该停止执行当前页面,据我所知.问题是,它没有.我期待重定向抛出"线程中止异常".

当我在调试模式下运行时,它会逐步调整,就好像它不仅仅是重定向和离开一样.

但重定向仍然开始 - 一旦我完成了其他的BasePage,"Discontinued"页面就会因重定向而开始加载.

有没有理由我的Redirect不会杀死BasePage的执行?

Sha*_*awn 32

Response.Redirect的第二个参数是endResponse,但工具提示显示"指示当前页面的执行是否应该终止".这是误导性的,因为当变量为true时,页面的执行实际上不会终止.它将完成运行任何代码.然而,不同的是,Render事件被取消,并且响应立即被对象移动的头部刷新.

您需要手动退出任何方法,Response.Redirect/Response.End将不会为您执行此操作.此外,如果您需要条件来查看页面是否已被重定向,请查看Response.IsRequestBeingRedirected.

  • 是.除了,你并不总是想那样做 (3认同)
  • 好的东西要知道 - 谢谢.由不准确的工具提示挫败! (2认同)

Ste*_*owe 10

你是退出调用重定向的函数,例如

...redirect(stopit,true);
return;
Run Code Online (Sandbox Code Playgroud)