服务器之间的区别是什么。转移和响应。重定向?

它们各自的优点和缺点是什么? 什么时候一种比另一种更合适? 什么时候不合适?


当前回答

简而言之:回应。重定向只是告诉浏览器访问另一个页面。服务器。Transfer有助于减少服务器请求,保持URL相同,并且通过一些错误处理,允许您传输查询字符串和表单变量。

我发现并同意以下观点:

Server.Transfer is similar in that it sends the user to another page with a statement such as Server.Transfer("WebForm2.aspx"). However, the statement has a number of distinct advantages and disadvantages. Firstly, transferring to another page using Server.Transfer conserves server resources. Instead of telling the browser to redirect, it simply changes the "focus" on the Web server and transfers the request. This means you don't get quite as many HTTP requests coming through, which therefore eases the pressure on your Web server and makes your applications run faster. But watch out: because the "transfer" process can work on only those sites running on the server; you can't use Server.Transfer to send the user to an external site. Only Response.Redirect can do that. Secondly, Server.Transfer maintains the original URL in the browser. This can really help streamline data entry techniques, although it may make for confusion when debugging. That's not all: The Server.Transfer method also has a second parameter—"preserveForm". If you set this to True, using a statement such as Server.Transfer("WebForm2.aspx", True), the existing query string and any form variables will still be available to the page you are transferring to. For example, if your WebForm1.aspx has a TextBox control called TextBox1 and you transferred to WebForm2.aspx with the preserveForm parameter set to True, you'd be able to retrieve the value of the original page TextBox control by referencing Request.Form("TextBox1").

其他回答

服务器之美。转移是你可以用它做的:

TextBox myTxt = (TextBox)this.Page.PreviousPage.FindControl("TextBoxID");

只要使用Server,就可以使用上述方法从上一页获取任何内容。转移但不响应。重定向

响应。重定向在第一个页面到达客户端后将页面重定向到另一个页面。所以客户端知道重定向。

服务器。传输退出页面的当前执行。客户端不知道重定向。它允许您传输查询字符串和表单变量。

所以这取决于你的需要来选择哪个更好。

”反应。重定向"和"服务器。“转移”有助于在页面执行时将用户从一个页面转移到另一个页面。但是他们进行这种转移/重定向的方式非常不同。

如果你是视觉爱好者,想看演示而不是理论,我建议你看看下面的facebook视频,它以更直观的方式解释了差异。

https://www.facebook.com/photo.php?v=762186150488997

他们之间的主要区别是谁来转账。在“响应。重定向“传输是由浏览器在服务器中完成的”。“传输”是由服务器完成的。让我们试着以更详细的方式来理解这句话。

在“服务器。转让”以下是转让发生的顺序:-

1.用户向ASP发送请求。网络页面。在下图中,请求被发送到“WebForm1”,我们希望导航到“Webform2”。

2.服务器开始执行“Webform1”,页面的生命周期开始。但是在页面的整个生命周期完成之前。transfer”恰好是“WebForm2”。

3.创建“Webform2”页面对象,执行整个页面生命周期,然后将输出HTML响应发送到浏览器。

在“回应”中。“重定向”下面是导航事件的顺序:-

1.客户端(浏览器)向页面发送请求。在下图中,请求被发送到“WebForm1”,我们希望导航到“Webform2”。

2.“Webform1”的生命周期开始执行。但在生命周期之间。重定向”发生。

3.现在,他向浏览器发送HTTP 302命令,而不是服务器执行重定向。该命令告诉浏览器必须向“Webform2”发起GET请求。aspx页面”。

4.浏览器解释302命令并为“Webform2.aspx”发送一个GET请求。

换句话说就是“服务器”。服务器在响应时执行“传输”。“重定向”由浏览器执行。”反应。重定向”需要两个请求来做页面的重定向。

所以什么时候使用“服务器”。转移”以及何时使用“响应”。重定向”?

使用“服务器。当您想导航位于同一服务器上的页面时,请使用“响应”。重定向"当你想在不同服务器和域上的页面之间导航时。

下面是一个汇总表,其中列出了不同之处以及在哪个场景中使用。

服务器。传输不会改变客户端浏览器中的URL,因此实际上浏览器并不知道您更改了另一个服务器端处理程序。响应。重定向告诉浏览器移动到另一个页面,因此标题栏中的url会发生变化。

服务器。传输稍微快一点,因为它避免了到服务器的一次往返,但不更改url可能对您有好处,也可能有坏处,这取决于您想要做什么。

简而言之:回应。重定向只是告诉浏览器访问另一个页面。服务器。Transfer有助于减少服务器请求,保持URL相同,并且通过一些错误处理,允许您传输查询字符串和表单变量。

我发现并同意以下观点:

Server.Transfer is similar in that it sends the user to another page with a statement such as Server.Transfer("WebForm2.aspx"). However, the statement has a number of distinct advantages and disadvantages. Firstly, transferring to another page using Server.Transfer conserves server resources. Instead of telling the browser to redirect, it simply changes the "focus" on the Web server and transfers the request. This means you don't get quite as many HTTP requests coming through, which therefore eases the pressure on your Web server and makes your applications run faster. But watch out: because the "transfer" process can work on only those sites running on the server; you can't use Server.Transfer to send the user to an external site. Only Response.Redirect can do that. Secondly, Server.Transfer maintains the original URL in the browser. This can really help streamline data entry techniques, although it may make for confusion when debugging. That's not all: The Server.Transfer method also has a second parameter—"preserveForm". If you set this to True, using a statement such as Server.Transfer("WebForm2.aspx", True), the existing query string and any form variables will still be available to the page you are transferring to. For example, if your WebForm1.aspx has a TextBox control called TextBox1 and you transferred to WebForm2.aspx with the preserveForm parameter set to True, you'd be able to retrieve the value of the original page TextBox control by referencing Request.Form("TextBox1").