我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
,我的代码就可以使用。
答案 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方法。