在asp.net中,存在两个Response.Redirect()的重载方法。
公共子重定向(_ url As String)
- 醇>
Public Sub Redirect(_ url As String,_ endResponse As Boolean _)
我想知道这两者之间的差异吗?我应该使用哪一个?
答案 0 :(得分:1)
第一个重载重定向到另一个URL,第二个重载允许您说明当前代码是否应继续执行,例如如果Response.Redirect("http://philippursglove.com", True)
出现在代码块的中间,则代码块的其余部分将继续执行并运行数据库更新或其他任何内容。
至于你应该使用哪一个,我们无法在你的代码更多的情况下看到它。
另请参阅Server.Transfer,它与Response.Redirect完全相同,但没有向浏览器发送任何内容,这可能会给您的Web服务器带来一些压力。见Server.Transfer vs Response.Redirect。
答案 1 :(得分:1)
他们都向您的浏览器发送302响应,告诉它请求指定的页面。如果您将某人重定向到新页面,通常不希望响应继续,因此默认情况下这是Response.Redirect(“/”)所做的。
如果您确实想要继续处理响应,则需要将第二个参数设置为false。
因此,在此示例中,a
将为1:
var a = 1;
Response.Redirect("/aboutus.aspx");
a = 2;
在此示例中,a
将为2,因为线程在重定向后继续运行。
var a = 1;
Response.Redirect("/aboutus.aspx", false);
a = 2;
小心但是如果在try catch中使用它。稍微有些奇怪意味着在下一个例子中a
将是2!
var a = 1;
try
{
Response.Redirect("/aboutus.aspx");
}
finally
{
a = 2;
}