Page_Load中的Response.Redirect

时间:2013-12-14 04:16:57

标签: asp.net response.redirect

Response.Redirect中有一个Page_Load

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    ...Code
    Response.Redirect("http://www.mysite.com")
End Sub

在添加Response.Redirect

之前,我有其他带有工作代码的子例程

添加Response.Redirect后,他们都不会处理他们的代码并自动执行Response.Redirect网站。

如果没有Response.Redirect,我的代码就可以使用。

2 个答案:

答案 0 :(得分:9)

使用

Response.Redirect("http://www.mysite.com",  false)

第二个参数指示当前页面的执行是否应该终止。

如果您使用Response.Redirect("http://www.mysite.com"),当前页面执行将终止

答案 1 :(得分:6)

请使用

Response.Redirect("http://example.com",  false)

根据PRB: ThreadAbortException Occurs If You Use Response.End, Response.Redirect, or Server.Transfer

  

如果使用Response.End,Response.Redirect或Server.Transfer   方法,发生ThreadAbortException异常。你可以使用   try-catch语句来捕获此异常。

     

Response.End 方法结束页面执行并转移   执行到应用程序中的Application_EndRequest事件   事件管道。 Response.End之后的代码行不是   执行。

     

Response.Redirect 和中出现此问题    Server.Transfer 方法,因为两个方法都在内部调用Response.End。

     

要解决此问题,请使用以下方法之一:

     

对于 Response.End ,请致电    HttpContext.Current.ApplicationInstance.CompleteRequest 方法而不是 Response.End 绕过代码执行到   Application_EndRequest事件。

     

对于 Response.Redirect ,请使用重载 Response.Redirect(String   url,bool endResponse)为endResponse传递false   用于禁止对Response.End的内部调用的参数。例如:   Response.Redirect(“nextpage.aspx”,false);                          如果使用此变通方法,则执行Response.Redirect之后的代码。对于Server.Transfer,请使用   而不是Server.Execute方法。