我的代码如下所示:响应重定向回发
protected void Page_Load(object sender, EventArgs e)
{
if(IsPostback)
{
if(/* User is not authenticated to perform any actions on this page */)
{
Response.Redirect(/* Error Page */);
}
}
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
/* do some stuff */
}
我早就猜到了,如果我提交按钮做回发,我并没有通过身份验证,然后在Page_Load重定向会发生,就送返回一个HTTP 302.但是,它似乎运行Response.Redirect代码行,继续处理它在Page_Load中,然后甚至运行btnSubmit_Click
。响应不是错误页面。
我可以在Response.Redirect之后调用return
来防止在该函数中进一步处理,但btnSubmit_Click
函数仍然可以运行。
它为什么会这样工作?
+1。这很奇怪。在我的电脑上,您的代码的确切版本不会执行'btnClick';它立即重定向。 – Icarus 2012-08-15 20:37:41
您是否有机会在Page_Load中捕捉一些异常?通常情况下,'Response.Redirect'会抛出'ThreadAbortException',从而阻止ASP运行时进一步处理您的请求。但是,如果吞下异常,则处理继续。由于我在开始时提出的问题,我在评论中没有回答这个问题。 – 2012-08-15 20:54:55