【发布时间】:2008-12-16 21:46:23
【问题描述】:
我有 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 并立即跳出 - 因此上述语句中的“真” - 据我了解,这应该停止当前页面的执行。问题是,它没有。我期待重定向抛出“线程中止异常”。
当我在调试模式下运行时,它会继续单步执行,就好像它不只是重定向和离开一样。
但是重定向仍然开始 - 一旦我完成了 BasePage 的其余部分,“Discontinued”页面然后开始加载作为重定向的结果。
我的重定向不会终止 BasePage 的执行是否有原因?
【问题讨论】:
-
另外,作为旁注,当第一个 Response.Redirect 没有让我们跳出 BasePage.cs 时,稍后尝试重定向时会遇到标头已发送的错误 - 显示重定向是已启动,但尚未完全执行。