【发布时间】:2010-03-29 17:27:42
【问题描述】:
我有一个为我所有需要身份验证的页面扩展 System.Web.UI.Page 的中间类。该类主要进行自定义身份验证处理。
当访问权限不足的用户尝试访问页面时,我会尝试将用户重定向回登录页面,同时防止执行任何进一步的页面事件(即 Page_load)。想到的第一个解决方案是 Response.Redirect 的默认实现。当然,这样做的缺点是可能会抛出 ThreadAbortExceptions。
所以我的问题是:在页面生命周期中何时(如果有的话)执行 Response.Redirect() 而不抛出 ThreadAbortException 实际上是安全的吗?
public class CustomPage : System.Web.UI.Page
{
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if (!IsValid())
Response.Redirect("login.aspx", true);
}
}
【问题讨论】:
-
为什么不希望抛出 ThreadAbortException。它被抛出以停止对请求页面的任何处理。
-
我猜这是真的。但是,如果您在 VS 中打开自动异常中断,Response.Redirect() 并不总是抛出异常,但它仍然会跳过处理页面的其余部分。
标签: c# asp.net response.redirect